Cod sursa(job #236665)

Utilizator ilincaSorescu Ilinca ilinca Data 28 decembrie 2008 03:00:52
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <stdio.h>

#define maxn 5000005


struct deque 
{
	int e, v;
};

int n, k;
deque q [maxn];


long long res ()
{
	int i, p, u, a;
	long long s;
	scanf ("%d%d", &n, &k);
	p=u=1;
	q [p].e=1;
	scanf ("%d", &q [p].v);
	for (i=2; i<=k; ++i)
	{
		scanf ("%d", &a);
		while (a < q [u].v && u >= p)
			--u;
		q [++u].e=i;
		q [u].v=a;
	}
	s=q [p].v;
	for (i=k+1; i<=n; ++i)
	{
		scanf ("%d", &a);
		while (i-q [p].e >= k)
			++p;
		while (a < q [u].v && u >= p)
			--u;
		q [++u].e=i;
		q [u].v=a;
		s+=q [p].v;
	}
	return s;
}

int main ()
{
	freopen ("deque.in", "r", stdin);
	freopen ("deque.out", "w", stdout);
	printf ("%lld\n", res ());
	return 0;
}