Pagini recente » Cod sursa (job #1794890) | Cod sursa (job #236976) | Cod sursa (job #2080876) | Cod sursa (job #1520909) | Cod sursa (job #122440)
Cod sursa(job #122440)
#include<stdio.h>
#define lg 500001
#define buf_size lg*8
int a[lg],n,k,i,max,aux,j;
int s[lg][2],start,end;
char buf[lg*8];
FILE *f=fopen("secventa.in","r");
void citire(){
setvbuf(f,buf,_IOFBF,buf_size);
fscanf(f,"%d %d",&n,&k);
for(i=1;i<=n;i++) fscanf(f,"%d",&a[i]);
fclose(f);}
void add(int i)
{while(start<=end&&s[end][0]>=a[i]) end--;
s[++end][0]=a[i];
s[end][1]=i;}
int get(int i)
{while(s[start][1]<=i-k) start++;
return s[start][0];}
int main(){
freopen("secventa.out","w",stdout);
citire();
start=1;end=0;
for(i=1;i<k;i++) add(i);
max=-32000;
for(i=k;i<=n;i++)
{add(i);
aux=get(i);
if(aux>max) {max=aux;j=i;} }
printf("%d %d %d",j-k+1,j,max);
fclose(stdout);
return 0;}