Cod sursa(job #353049)

Utilizator borsoszalanBorsos Zalan borsoszalan Data 3 octombrie 2009 23:02:46
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include <stdio.h>
#include<deque>

#define maxn 5000010

int n,k,i;
int a[maxn];
long long sum;

using namespace std;
deque <int> d;

int main()
{
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	int i;
	scanf("%d %d ", &n, &k);
	for (i = 1; i <= n; i++) 
	{
		scanf("%d ", &a[i]);
		while(!d.empty()&&a[d.back()]>=a[i])
			d.pop_back();
		d.push_back(i);
		if(d.front()<=i-k)
			d.pop_front();
		if(i>=k)
			sum+=a[d.front()];


	}
	printf("%lld\n", sum);

	return 0;
}