Cod sursa(job #458078)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 22 mai 2010 22:14:18
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>

#define file_in "deque.in"
#define file_out "deque.out"

#define nmax 5010010

int n,k;
int v[nmax];
int d[nmax];

void citire()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &n, &k);
	for (int i=1;i<=n;++i)
		 scanf("%d", &v[i]);
	
}

void solve()
{
	int p=1;
	int u=0;
	int i;
	long long suma=0;
	
	for (i=1;i<=n;++i)
	{
		while(p<=u && v[i]<=v[d[u]]) u--;
		d[++u]=i;
		if (d[p]==i-k) p++;
		if (i>=k)
			suma+=v[d[p]];
	}
	
	printf("%lld", suma);
}
	
	
int main()
{
	citire();
	solve();
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
}