Cod sursa(job #1043518)

Utilizator alexiaambrusAlexia Ambrus alexiaambrus Data 28 noiembrie 2013 18:13:58
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<fstream>
using namespace std;
int n, i, k, p, u, pf, uf, maxim, D[500003], v[500003], aux, semn;
char ch[3000003];
FILE*f;
ofstream g("secventa.out");
int main(){
    f= fopen("secventa.in","r");
    fscanf(f,"%d", &n);
    fscanf(f,"%d", &k);
    n=0;
    semn=1;
    fgets(ch, 3000003, f);
    for(i=1; ch[i]!=0; i++){
        if(ch[i]>='0' && ch[i]<='9')
            aux=aux*10+(ch[i]-'0');
        else{
            if(ch[i]=='-')
                semn=-1;
            else{
                v[++n]=aux*semn;
                aux=0;
                semn=1;
            }
        }
    }
   //for(i=1; i<=n; i++)
   // g<<n<<" ";
    p=1; u=0;
    maxim=-999999;
    for(i=1; i<=n; i++){
        while(p<=u && v[i]<=v[D[u]])
            u--;
        D[++u]=i;
        if(D[u]-D[p]==k)
            p++;
        if(i>=k)
            if(v[D[p]]>maxim){
                maxim=v[D[p]];
                pf=D[u]-k+1;
                uf=D[u];
            }
    }
    g<<pf<<" "<<uf<<" "<<maxim<<"\n";
return 0;
}