Cod sursa(job #460361)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 2 iunie 2010 10:34:28
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include <stdio.h>
#define DIM 5000002

int A[DIM], Deque[DIM];
int n, k;
long long s;

int main(){
	
	int i, p, u;
	
	freopen ("deque.in", "r", stdin);
	freopen ("deque.out", "w", stdout);
	
	scanf ("%d %d", &n, &k);
	for (i=1; i<=n; i++)
		scanf ("%d", &A[i]);

	p = 1, u = 0;
	for (i=1; i<=n; i++){
		while (p <= u && A[i] <= A[Deque[u]])
			u--;
		Deque[++u] = i;
		if (Deque[p] == i-k)
			p++;
		if (i >= k)
			s += (long long)A[Deque[p]];		
	}
	
	printf ("%lld", s);
	
	return 0;
}