Cod sursa(job #1024878)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 9 noiembrie 2013 11:49:47
Problema Secventa Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
//#include <fstream>
#include <cstdio>
#include <cstring>
using namespace std;
FILE *f=fopen("secventa.in","r");
FILE *g=fopen("secventa.out","w");
int L,n,k,t,maxim=-500000,nr=1,val,x;
int v[500011],deq[500011];
char s[7*500011],*q,*c;
int main(void){
    register int i=0,p,u,j=0;

   // f>>n>>k;
    fscanf(f,"%d %d\n",&n,&k);
    t=1;
    fgets(s,sizeof(s),f);
    deq[1]=1;
    p=u=1;
    q=c=s;
    sscanf(s,"%d",&v[1]);
    do{j++;}while(s[j]!=' ');
    int dr,st;
    for(i=2;i<=n;i++){
        if(j<strlen(s)){
            sscanf(s+j,"%d",&v[i]);
            nr++;
            do{j++;}while(s[j]!=' ' && nr<n && s[j]!='\0');
        }
        while(v[deq[u]]>v[i] && u>=p)
            u--;
        deq[++u]=i;
        if(i-deq[p]==k)
            p++;
        if(i>=k)
            if(v[deq[p]]>maxim){
                maxim=v[deq[p]];
                st=deq[p];
                dr=deq[u];
            }
    }
    fprintf(g,"%d %d %d",dr-k+1,dr,maxim);
    fclose(f);
    fclose(g);
    return 0;
}