Pagini recente » Cod sursa (job #2579141) | Cod sursa (job #271895) | Cod sursa (job #545232) | Cod sursa (job #803592) | Cod sursa (job #27439)
Cod sursa(job #27439)
#include<stdio.h>
FILE* f= fopen("secventa.in", "rt");
FILE* g = fopen("secventa.out", "wt");
long int
contor=0,deque[500001],primul=1,ultimul,N,K,max,PozInit,PozFin,poz[500001];
inline void sterge_ultimul()
{ultimul--;
}
inline void sterge_primul()
{
primul++;
}
inline void adauga(long int info, long int p)
{ultimul++;
deque[ultimul]=info;
poz[ultimul] = p;}
int main()
{
fscanf(f,"%ld %ld",&N,&K);
for(long int i=1;i<=K;i++)
{long int aux;
fscanf(f,"%ld",&aux);
if(i!=1)
while(aux<deque[ultimul])
sterge_ultimul();
adauga(aux, i);
}
max=deque[primul];
PozInit=1;PozFin=K;
for(long int i=K+1;i<=N;i++)
{
long int aux;
fscanf(f,"%ld",&aux);
if(poz[primul]<i-K+1)
sterge_primul();
while(aux<deque[ultimul] && ultimul >= primul)
sterge_ultimul();
adauga(aux, i);
if(max<deque[primul])
{max=deque[primul];
PozInit=poz[primul];
PozFin=poz[primul]+K-1;
}
}
fprintf(g,"%ld %ld %ld",PozInit,PozFin, max);
fclose(f);
fclose(g);
return 0;
}