Cod sursa(job #257365)

Utilizator AthanaricCirith Gorgor Athanaric Data 13 februarie 2009 09:27:35
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <stdio.h>
#define N 5000000
int v[N],dq[N],p,u,i,k,n;
void Read()
{
	scanf("%d%d",&n,&k);
	for (int i=1; i<=n; i++)
		scanf("%d",&v[i]);
}
void Dreapta(int i)
{
	while (u!=p&&v[dq[u-1]]>=v[i])
		--u;
	dq[u++]=i;
}
void Stanga(int i)
{
	if (i-dq[p]>=k)
		++p;
}
void Deque()
{
	dq[u++]=1;
	for (i=2; i<=k; i++)
		Dreapta(i);
	unsigned long long s=v[dq[p]];
	for (i=k+1; i<=n; ++i)
	{
		Stanga(i);
		Dreapta(i);
		s+=v[dq[p]];
	}
	printf("%lld\n",s);
}
void Solve()
{
	Read();
	Deque();
}
int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	Solve();
}