Cod sursa(job #97073)

Utilizator andrei.12Andrei Parvu andrei.12 Data 4 noiembrie 2007 23:15:10
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
int n, k, i, first = 1, last = 1, max = -30001, p1, p2, x;
struct deque{
	int v, i;
};
deque q[500005];
int main()
{
	freopen("secventa.in", "rt", stdin);
	freopen("secventa.out", "wt", stdout);
	scanf("%d%d", &n, &k);
	scanf("%d", &x);
	q[1].v = x;
	q[1].i = 1;
	for (i=2; i<=n; i++){
		scanf("%d", &x);
		while (first <= last && i-q[first].i >= k)
			first ++;
		while (first <= last && x <= q[last].v)
			last --;
		q[++last].v = x;
		q[last].i = i;
		if (q[first].v > max && i-k+1 > 0){
			max = q[first].v;
			p1 = i-k+1;
			p2 = i;
		}
	}
	printf("%d %d %d\n", p1, p2, max);
	return 0;
}