Pagini recente » Cod sursa (job #3178807) | Cod sursa (job #1002855) | Cod sursa (job #2101826) | Cod sursa (job #2114513) | Cod sursa (job #27935)
Cod sursa(job #27935)
#include<stdio.h>
long int N,K,deque[500010],poz[500010],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;
}