Cod sursa(job #672559)

Utilizator SmarandaMaria Pandele Smaranda Data 2 februarie 2012 16:14:16
Problema Deque Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 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=0;
	long long s=0;
	deque[0]=0;
	for (long i=1;i<=n;i++) {
		scanf("%ld",&x);
		while (deque[0] && x<deque[deque[0]])
			deque[0]--;
		deque[++deque[0]]=x;
		ind[deque[0]]=i;
		if (p==0) p=1;
		if (ind[deque[0]]-ind[p]==k)
			p++;
		if (i>=k)
			s=(long long)s+deque[p];
	}
	printf("%lld\n",s);
}

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