Cod sursa(job #613168)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 17 septembrie 2011 11:50:10
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <cstdio>
#include <iostream>
#include <deque>
#include <vector>
using namespace std;

int n,k;
int v[500005];
deque <int> d;

int main()
{
	int i;
	freopen("deque.in","r", stdin);
	scanf("%d %d\n",&n,&k);
	for(i=1;i<=n;i++) scanf("%d ",&v[i]);
	
	long long S=0;
	for(i=1;i<=n;i++)
	{
		while(d.size() &&v[d.back()]>=v[i]) d.pop_back();
		d.push_back(i);
		if(i>=k) S+=v[d.front()];
		if(i-k+1==d.front()) d.pop_front();
	}
	freopen("deque.out","w", stdout);
	printf("%lld",S);
	fclose(stdin);
	fclose(stdout);
	return 0;
}