Cod sursa(job #2439554)

Utilizator divianegoescuDivia Negoescu divianegoescu Data 16 iulie 2019 12:13:06
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <deque>
#include <cstring>
#define val first
#define poz second
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n,i,k,x,mx=-2000000000,i1,i2,j,v[500002],semn;
deque <pair<int,int> > deq;
char s[4000001];
int main(){
    fin>>n>>k;
    fin.get();
    fin.getline(s,4000000);
    semn=1;
    for(j=1,i=0;s[i];i++){
        if(s[i]=='-')
            semn=-1;
        else if(isdigit(s[i]))
            v[j]=v[j]*10+s[i]-'0';
        else v[j]*=semn,j++,semn=1;
    }
    v[j]*=semn;
    for(i=1;i<=n;i++){
        x=v[i];
        while(deq.size() && x<=deq.back().val)
            deq.pop_back();
        deq.push_back({x,i});
        if(deq.front().poz==i-k)
            deq.pop_front();
        if(i>=k && deq.front().val>mx){
            mx=deq.front().val;
            i1=i-k+1;
            i2=i;
        }
    }
    fout<<i1<<" "<<i2<<" "<<mx;
    return 0;
}