Pagini recente » Monitorul de evaluare | Cod sursa (job #1329826) | Cod sursa (job #838771) | Cod sursa (job #944184) | Cod sursa (job #29604)
Cod sursa(job #29604)
#include<stdio.h>
FILE *f= fopen("secventa.in", "rt");
FILE *g = fopen("secventa.out", "wt");
int
contor=0,deque[500010],primul=1,ultimul,N,K,max,PozInit,PozFin,poz[500010];
char buf[6*500001];
int main()
{
setbuffer(f,buf,sizeof(buf));
fscanf(f,"%d %d",&N,&K);
for(int i=1;i<=K;i++)
{int aux;
fscanf(f,"%d",&aux);
while(aux<deque[ultimul] && ultimul > 0)
ultimul--;
deque[++ultimul] = aux;
poz[ultimul] = i;
}
max=deque[primul];
PozInit=poz[primul];PozFin=poz[ultimul];
for(int i=K+1;i<=N;i++)
{
int aux;
fscanf(f,"%d",&aux);
if(poz[primul]<i-K+1)
primul++;
while(aux<deque[ultimul] && ultimul >= primul)
ultimul--;
deque[++ultimul] = aux;
poz[ultimul] = i;
if(max<deque[primul])
{max=deque[primul];
PozFin=i;
}
}
fprintf(g,"%d %d %d",PozFin-K+1,PozFin, max);
fclose(f);
fclose(g);
return 0;
}