Cod sursa(job #708852)
Utilizator | Crestez Paul iarba | Data | 7 martie 2012 12:38:09 |
---|---|---|---|
Problema | Secventa | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.52 kb |
#include <stdio.h>
long a[500002],deq[500002];
long i,n,j,fr,bk,max,maxi,k;
FILE *f,*g;
int main()
{
f=fopen("secventa.in","r");
g=fopen("secventa.out","w");
fscanf(f,"%ld%ld",&n,&k);
for(i=1;i<=n;i++){fscanf(f,"%d",&a[i]);}
fr=1;bk=0;
for(i=1;i<=n;i++){
while((fr<=bk)&&(a[i]<=a[deq[bk]])){bk--;}
deq[++bk]=i;
if(deq[fr]==i-k){fr++;}
if(i>=k){if(a[deq[fr]]>max){max=a[deq[fr]];maxi=i;}}
}
fprintf(g,"%ld %ld %ld",maxi-k+1,maxi,max);
fclose(f);fclose(g);
return 0;
}