Cod sursa(job #2868025)

Utilizator mati.coldea@gmail.comMatei Coldea [email protected] Data 10 martie 2022 18:18:05
Problema Secventa Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <iostream>
#include <deque>
#include <cstring>
#include <fstream>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int a[500001];
    int maxi=-5000001;
        int n, k;
char s[3500001];

 void citire(){
  fin>>n>>k;

    fin.get();

    fin.get(s,3500001);

    int ind=0;
    int semn=1;
    int l=0;

    while(ind<strlen(s)){
        while(s[ind]==' '){
            ind++;
        }
        if(s[ind]=='-'){
            semn=-1;
            ind++;
        }
        else{
            semn=1;
        }
        int nr=0;
        while(isdigit(s[ind])){
            nr=nr*10+(s[ind]-'0');
            ind++;
        }
        nr*=semn;

        a[++l]=nr;
        while(s[ind]==' '){
            ind++;
        }
        if(l==n){
            break;
        }
    }


 }

int main()
{




    citire();



    deque<int> Q(n+1);

    int front =1;
    int back=0;
    int stop;
    for(int i=1;i<=n;i++){

        if(Q[front]==i-k){
            front++;
        }
        while(front<=back && a[Q[back]]>=a[i]){
            back--;
        }
        Q[++back]=i;


        if(i>=k){
            if(a[Q[front]]>maxi){
                maxi=a[Q[front]];
               stop=i;

            }

        }

    }
fout << stop-k+1<<' '<<stop<<' '<<maxi;


    return 0;
}