Cod sursa(job #724465)

Utilizator valiro21Valentin Rosca valiro21 Data 26 martie 2012 16:18:58
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <cstdio>
#include <list>
#define val first
#define index second
#define NMax 5000010

using namespace std;

pair<long long,int> q[NMax];
long long n,k,tot,x,lo=1,hi;

int main() {
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);

	scanf("%lld %lld",&n,&k);

	for(long o=1;o<=n;o++) {
		scanf("%lld",&x);
		while(lo<=hi && q[hi].val >= x)
			hi--;
		while(lo<=hi && q[lo].index <= o-k)
			lo++;
		q[++hi]= make_pair(x,o);
		if(k<=o)
			tot+=q[lo].val;
	}

	printf("%lld\n",tot);

	return 0;
}