Cod sursa(job #572305)

Utilizator DuxarFII-Stefan-Negrus Duxar Data 5 aprilie 2011 10:44:28
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<cstdio>
#define nmax 5000001
using namespace std;

struct deque
{
	int el,pos;
} A[nmax];

int N,k;
long long ST;

void solve();
void write();

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

void solve()
{
	int i,in,sf,e,ok1;
	scanf("%d%d",&N,&k);
	in=sf=1;
	scanf("%d",&e);
	A[in].el=e;
	A[in].pos=1;
	for (i=2;i<=N;++i)
	{
		scanf("%d",&e);
		while (A[sf].el>=e&&sf>=in)
			--sf;
		++sf;
		A[sf].pos=i;
		A[sf].el=e;
		if (A[in].pos<=i-k) ++in;
		if (i>=k) ST+=A[in].el;
	}
}

void write()
{
	printf("%lld\n",ST);
}