Cod sursa(job #811494)

Utilizator SebiSebiPirtoaca George Sebastian SebiSebi Data 12 noiembrie 2012 14:55:42
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include<stdio.h>
using namespace std;
int c[5000001],v[5000001];
int main ()
{
	int n,i,st,dr,k;
	long long s;
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	scanf("%d %d",&n,&k);
	for(i=1;i<=n;i++)
		scanf("%d",&v[i]);
	fclose(stdin);
	s=0;
	st=1;
	dr=0;
	for(i=1;i<=n;i++) {
		while((st<=dr)&&(v[c[dr]]>=v[i]))
			dr--;
		c[++dr]=i;
		if(c[st]==(i-k))
			st++;
		if(i>=k)
			s=s+v[c[st]];
	}
	printf("%lld",s);
	fclose(stdout);
	return 0;
}