Cod sursa(job #2279011)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 8 noiembrie 2018 20:25:28
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<cstdio>
using namespace std;
FILE *in=fopen("secventa.in","r");
FILE *out=fopen("secventa.out","w");
int n,k,dq[500005],v[500005],maxim=(1<<31),x,y,poz;
char buffer[10005];
void citeste(int &x){
    x=0;
    char semn;
    while(buffer[poz]<'0' || buffer[poz]>'9'){
        semn=buffer[poz];
        if(++poz==10000){
            fread(buffer,1,10000,in);
            poz=0;
        }
    }
    while(buffer[poz]>='0' && buffer[poz]<='9'){
        x=x*10+buffer[poz]-'0';
        if(++poz==10000){
            fread(buffer,1,10000,in);
            poz=0;
        }
    }
    if(semn=='-')
        x=-x;
}
int main(){
    fread(buffer,1,10000,in);
    citeste(n);
    citeste(k);
    for(int i=1;i<=n;i++)
        citeste(v[i]);
    int s,d;
    s=1; d=0;
    for(int i=1;i<=n;i++){
        while(s<=d && v[dq[d]]>=v[i]) --d;
        dq[++d]=i;
        if(dq[s]==i-k) ++s;
        if(i>=k){
            if(maxim<v[dq[s]]){
                maxim=v[dq[s]];
                x=dq[s]; y=dq[d];
            }
        }
    }
    fprintf(out,"%d %d %d",x,y,maxim);
}