Cod sursa(job #672565)

Utilizator SmarandaMaria Pandele Smaranda Data 2 februarie 2012 16:19:46
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<cstdio>
#define NMAX 5000002
using namespace std;
long deque[NMAX];
long ind[NMAX];
long n,k;
void read () {
	scanf("%ld%ld",&n,&k);
}

void solve () {
	long x,p=1;
	long long s=0;
	deque[0]=0;
	for (long i=1;i<=n;i++) {
		scanf("%ld",&x);
		while (p<=deque[0] && x<=deque[deque[0]])
			deque[0]--;
		deque[++deque[0]]=x;
		ind[deque[0]]=i;
		if (ind[deque[0]]-ind[p]==k)
			p++;
		if (i>=k)
			s=s+deque[p];
	}
	printf("%lld\n",s);
}

int main () {
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	
	read ();
	solve ();
	return 0;
}