Cod sursa(job #258111)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 14 februarie 2009 18:42:27
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <stdio.h>
#define NR 5000005

int n,k,v[NR],deq[NR],u,p;
long long s;
void read()
{
	int i;
	scanf("%d%d",&n,&k);
	for (i=1; i<=n; i++)
		scanf("%d",&v[i]);
}
void stanga(int i)
{
	if (i-deq[p]>=k)
		++p;
}
void dreapta(int i)
{
	while (u!=p && v[deq[u-1]]>=v[i])
		--u;
	deq[u++]=i;
}
void solve()
{
	int i;
	//deq[u++]=1;
	for (i=1; i<=k; i++)
		dreapta(i);
	s=v[deq[p]];
	for (i=k+1; i<=n; ++i)
	{
		stanga(i);
		dreapta(i);
		s+=v[deq[p]];
	}
	printf("%lld",s);
}
int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	read();
	solve();
	return 0;
}