Cod sursa(job #708699)

Utilizator gyeresihunorGyeresi Hunor gyeresihunor Data 7 martie 2012 08:50:39
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<deque>
#include<algorithm>
#include<set>
#include<stdio.h>
#include<vector>

using namespace std;

typedef struct elem
{
	int y;//ertek;
	int w;//pozicio;
}ELEM;
elem s;
deque<elem> dq;
long long n,k;
long long m=0;
long long i;
long x;

int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	scanf("%lld%lld",&n,&k);
	for(i=1;i<=n;i++)
	{
		scanf("%ld",&x);
		while(!dq.empty()&&dq.front().w<=i-k)
			dq.pop_front();
		while(!dq.empty()&&dq.back().y>=x)
			dq.pop_back();
		s.y=x;
		s.w=i;
		dq.push_back(s);
		if(i>=k)
			m+=dq.front().y;
	}
	printf("%lld",m);
	return 0;
}