Pagini recente » Cod sursa (job #126408) | Cod sursa (job #575313) | Cod sursa (job #1021135) | Cod sursa (job #326) | Cod sursa (job #215335)
Cod sursa(job #215335)
#include <cstdio>
#include <deque>
#define NMAX 500001
#define BOUND 30001
struct deque {int val,pos; } d[NMAX];
int main()
{
int N,K;
freopen("secventa.in","r",stdin);
scanf("%d %d",&N,&K);
//deque d[NMAX]; e prea mare ca sa mearga declarat in functie
int max = -BOUND, st = 0, dr = -1, l, r;
for(int i = 0, v ;i < N; ++i)
{
scanf("%d",&v);
if(st<=dr) {
if(i >= K && d[st].pos == i - K) //pop front
++st;
while(st<=dr && d[dr].val >= v) //pop back
--dr;
}
d[++dr].val = v; d[dr].pos = i; //push back
if(i >= K - 1 && d[st].val > max)
max = d[st].val, l = i - K + 1, r = i;
}
freopen("secventa.out","w",stdout);
printf("%d %d %d",l + 1, r + 1,max);
}