Pagini recente » Cod sursa (job #1279882) | Cod sursa (job #1524743) | Cod sursa (job #1881343) | Cod sursa (job #2847580) | Cod sursa (job #1493556)
#include <stdio.h>
#include <stdlib.h>
int coada[500000],v[500000];
int main()
{
FILE *fin,*fout;
int n,k,i,ad,min,j,valid,max,inceput,sfarsit,prim,ultim;
fin=fopen("secventa.in","r");
fout=fopen("secventa.out","w");
fscanf(fin,"%d %d",&n,&k);
for(i=0; i<n; i++)
fscanf(fin,"%d",&v[i]);
prim=0;
ultim=1;
coada[0]=v[0];
for(i=1;i<k;i++)
{
while(v[i]<coada[ultim-1] && ultim>0)
{
ultim--;
}
coada[ultim]=v[i];
ultim++;
}
max=coada[0];
inceput=0;
sfarsit=k-1;
for(i=k; i<n; i++)
{
if(v[i-k]==coada[prim])
{
prim++;
}
while(v[i]<coada[ultim-1] && ultim>prim)
ultim--;
coada[ultim]=v[i];
ultim++;
if(coada[prim]>max)
{
max=coada[prim];
inceput=i-k+1;
sfarsit=i;
}
}
fprintf(fout,"%d %d %d",inceput+1,sfarsit+1,max);
fclose(fin);
fclose(fout);
return 0;
}