Cod sursa(job #1024866)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 9 noiembrie 2013 11:28:00
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
#include<cstring>
int nmax,n,k,x,i,j,semn,nr,p,u,in,fin,v[500001],d[500001];
char s[4000001];
FILE *f,*g;
int main(){
    f=fopen("secventa.in","r");
    g=fopen("secventa.out","w");
    fscanf(f,"%d%d\n",&n,&k);
    fgets(s,5000000,f);
    n=0;
    for(i=0;s[i]!=0;i++){
        if(s[i]>='0'&&s[i]<='9')
            x=x*10+s[i]-'0';
        else if(s[i]=='-')
            semn=-1;
        else {
            v[++n]=x*semn;
            x=0;
            semn=1;
        }
    }
    p=1;
    u=0;
    nmax=-30001;
    for(i=1;i<=n;i++){
        while(v[i]<v[d[u]] && u>=p){
            u--;
            }
        d[++u]=i;
        if(i>=k){
            if(i-d[p]==k)
                p++;
            if(v[d[p]]>nmax){
                nmax=v[d[p]];
                in=i-k+1;
                fin=i;
            }
        }
    }
    fprintf(g,"%d %d %d",in,fin,nmax);
    fclose(f);
    fclose(g);
    return 0;
}