Cod sursa(job #311867)

Utilizator nemultumitulMatei Ionita nemultumitul Data 4 mai 2009 15:36:42
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <stdio.h>
#define N 5000005
long long d[N],v[N];
int p,u,n,K;

void stanga(int x)
{
	if (x-d[p]>=K)
		p++;
}

void dreapta(int x)
{
	while (p<=u&&v[x]<=v[d[u]])
		u--;
	d[++u]=x;
}

int main()
{
	freopen ("deque.in","r",stdin);
	freopen ("deque.out","w",stdout);
	
	int x;
	long long s=0;
	scanf("%d%d",&n,&K);
	for (x=0;x<K;++x)
	{
		scanf("%lld",&v[x]);
		dreapta(x);
	}
	s=v[d[p]];
	for(x=K;x<n;++x)
	{
		scanf("%lld",&v[x]);
		stanga(x);
		dreapta(x);
		s+=v[d[p]];
	}
	printf("%lld",s);
	return 0;
}