Pagini recente » Cod sursa (job #413260) | Cod sursa (job #3247996) | Cod sursa (job #564004) | Cod sursa (job #1197379) | Cod sursa (job #338217)
Cod sursa(job #338217)
#include<stdio.h>
#include<string.h>
#define maxN 500005
#define charN 500005*6
const char in[]="secventa.in";
const char out[]="secventa.out";
int v[maxN], N, K, deque[maxN], front=1, back=0, max=-maxN, ipoz, prima, nr, semn;
char s[charN], *p=s;
int main()
{int i;
freopen(in,"r",stdin);
scanf("%d %d \n", &N, &K);
gets(s);
for(i=1, semn=1, nr=0;i<=N;++i,nr=0,semn=1)
{
if(*p=='-')semn=-1,++p;
while(*p>='0' && *p<='9')nr=nr*10+*p-'0',++p;
nr*=semn,v[i]=nr,++p;
}
for(i=1;i<=N;++i)
{
while(front<=back && v[i]<=v[deque[back]])--back;
deque[++back]=i;
if(deque[front]==i-K)++front;
if(i>=K)if(v[deque[front]]>max){max=v[deque[front]];ipoz=i;prima=i-K+1;}
}
freopen(out,"w",stdout);
printf("%d %d %d \n", prima, ipoz, max);
return 0;
}