Pagini recente » Cod sursa (job #2556117) | Cod sursa (job #1857119) | Cod sursa (job #2081789) | Cod sursa (job #376639) | Cod sursa (job #27957)
Cod sursa(job #27957)
#include<stdio.h>
long int N,K,deque[500001],poz[400000],primul=1,ultimul,max,end;
FILE *f=fopen("secventa.in","rt");
FILE *g=fopen("secventa.out","wt");
int main()
{
fscanf(f,"%ld %ld",&N,&K);
for(int i=1;i<=K;i++)
{
long int aux;
fscanf(f,"%ld",&aux);
while(aux<deque[ultimul] && ultimul>=primul)
ultimul--;
deque[++ultimul]=aux;
poz[ultimul]=i;
}
end=K;
max=deque[1];
for(int i=K+1;i<=N;i++)
{
long int aux;
fscanf(f,"%ld",&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];
end=i;}
}
fprintf(g,"%ld %ld %ld",end-K+1,end,max);
fclose(f);
fclose(g);
return 0;
}