Cod sursa(job #303694)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 10 aprilie 2009 10:54:58
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include <stdio.h>
#define maxN 5000100

int V[maxN], Deque[maxN], N, K;
int main () {
	long long Sol = 0;
	int i, st, dr;

	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);

	scanf("%d%d", &N, &K);
	for (i = 1; i <= N; ++ i)
		scanf("%d", &V[i]);

	st = dr = 1;

	for (i = 1; i <= N; ++ i) {
		while (st != dr && V[Deque[dr - 1]] > V[i])	dr --;
		Deque[dr ++] = i;
		
		while (Deque[st] <= i - K)	st ++;

		if (i >= K)
			Sol += V[Deque[st]];
	}

	printf("%lld\n", Sol);

	return 0;
}