Pagini recente » Cod sursa (job #2018358) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #868697) | Cod sursa (job #1491901)
#include <stdio.h>
#include <stdlib.h>
int deck[500000];
int ordine[500000];
int main()
{
FILE *fin, *fout;
int n,k,i,j,l,max,poz,x,start;
fin=fopen("secventa.in","r");
fout=fopen("secventa.out","w");
fscanf(fin,"%d%d",&n,&k);
poz=i=0;
fscanf(fin,"%d",&deck[0]);
ordine[0]=0;
max=deck[0];
j=1;
for(i=1;i<k;i++){
fscanf(fin,"%d",&x);
while(x<deck[j-1] && j>=1)
j--;
deck[j]=x;
ordine[j]=i;
j++;
if(max<deck[0])
max=deck[0];
}
start=0;
for(i;i<n;i++){
fscanf(fin,"%d",&x);
if(ordine[start]==i-k)
start++;
while(x<deck[j-1] && j>=start+1)
j--;
deck[j]=x;
ordine[j]=i;
j++;
if(max<deck[start]){
max=deck[start];
poz=i-k+1;
}
}
if(max<deck[start]){
max=deck[start];
poz=i-k+1;
}
fprintf(fout,"%d %d %d",poz+1,poz+k,max);
fclose(fin);
fclose(fout);
return 0;
}