Cod sursa(job #271352)

Utilizator peanutzAndrei Homorodean peanutz Data 5 martie 2009 10:28:41
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <stdio.h>

#define NMAX 5000010

long n, k;
long a[NMAX];
long deque[NMAX];
long long sum;

int main()
{
	long i = 1;
	long st, dr;
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);

	scanf("%ld %ld", &n, &k);
	for(i = 1; i <= n; ++i)
		scanf("%ld", &a[i]);
	st = 1;
	dr = 0;

	for(i = 1; i <= n; ++i)
	{
		while(st <= dr && a[ deque[dr] ] >= a[i])
			--dr;
		deque[++dr] = i;

		if(deque[st] == i-k)
			++st;

		if(i >= k)
			sum += a[ deque[st] ];
	}
	printf("%lld\n", sum);

	return 0;
}