Pagini recente » Cod sursa (job #3198490) | Cod sursa (job #2596997) | Cod sursa (job #186231) | Cod sursa (job #2008101) | Cod sursa (job #27736)
Cod sursa(job #27736)
#include<stdio.h>
FILE* f= fopen("secventa.in", "rt");
FILE* g = fopen("secventa.out", "wt");
long int deque[500001],N,K,max,primul=1,ultimul,PozPrim=1,PozUltim,AdrAlDoilea,init,fin;
inline void adauga(long int info)
{ultimul++;
PozUltim++;
deque[ultimul]=info;
if(ultimul-primul==1)
AdrAlDoilea=PozUltim;
}
inline void sterge_ultimul()
{ultimul--;}
inline void sterge_primul()
{primul++;PozPrim=AdrAlDoilea;}
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);
}
max=deque[primul];
init=1; long int initaux=1;
fin=K; long int finaux=K;
for(int i=K+1;i<=N;i++)
{initaux++;
finaux++;
long int aux;
fscanf(f,"%ld", &aux);
while(aux<deque[ultimul])
sterge_ultimul();
adauga(aux);
if(PozUltim-PozPrim>=K && primul!=ultimul)
sterge_primul();
if(ultimul-primul==1)
AdrAlDoilea=PozUltim;
if(deque[primul]>max)
{max=deque[primul];
init=initaux;
fin=finaux;
}
}
fprintf(g,"%ld %ld %ld",init+1,fin+1,max);
return 0;
}