Cod sursa(job #323607)

Utilizator stinkyStinky si Grasa stinky Data 12 iunie 2009 20:45:51
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<cstdio>

const int N=5000001;

int v[N],d[N],p=1,u=0,n,k;

inline void stanga(int i)
{
	if(d[p]+k==i)
		++p;
}

inline void dreapta(int i)
{
	while(p<=u && v[d[u]]>=v[i])
		--u;
}

void citire()
{
	int i;
	scanf("%d%d",&n,&k);
	for(i=1;i<=n;++i)
		scanf("%d",&v[i]);
}

void suma()
{
	int i;
	long long s;
	for(i=1;i<=k;++i)
	{
		dreapta(i);
		d[++u]=i;
	}
	s=v[d[1]];
	for(i=k+1;i<=n;++i)
	{
		dreapta(i);
		d[++u]=i;
		stanga(i);
		s+=(long long)v[d[p]];
	}
	printf("%lld\n",s);
}

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