Cod sursa(job #596652)
Utilizator | Data | 18 iunie 2011 10:52:18 | |
---|---|---|---|
Problema | Secventa | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.56 kb |
#include <cstdio>
FILE *f,*g;
int v[510000],b[510000];
int i,n,k,max,maxi,maxj,st,dr;
int main() {
f=fopen("secventa.in","r");
g=fopen("secventa.out","w");
fscanf(f,"%d%d",&n,&k);
st=1;
dr=0;
max=-35000;
for (i=1;i<=n;i++) {
fscanf(f,"%d",&v[i]);
while (st<=dr && v[b[dr]]>=v[i]) dr--;
b[++dr]=i;
if (b[st]==i-k) st++;
if (i>=k) {
if (v[b[st]]>max) {
max=v[b[st]];
maxi=i-k+1;
maxj=i;
}
}
}
fprintf(g,"%d %d %d",maxi,maxj,max);
fclose(g);
}