Cod sursa(job #572263)

Utilizator DuxarFII-Stefan-Negrus Duxar Data 5 aprilie 2011 10:07:33
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 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);
		if (A[in].pos<=i-k)
		{
			ST+=A[in].el;
			++in;
		}

		while (A[sf].el>e&&sf>=in)


			--sf;


		++sf;
		A[sf].pos=i;
		A[sf].el=e;

	}
	ST+=A[in].el;
}

void write()
{

	printf("%I64d\n",ST);
}