Cod sursa(job #572312)

Utilizator DuxarFII-Stefan-Negrus Duxar Data 5 aprilie 2011 10:47:45
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
//#include<cstdio>
#include<fstream>
#define nmax 5000001
using namespace std;

ifstream f("deque.in");
ofstream g("deque.out");

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);
	f>>N>>k;
	in=sf=1;
	//scanf("%d",&e);
	f>>e;
	A[in].el=e;
	A[in].pos=1;
	for (i=2;i<=N;++i)
	{
		//scanf("%d",&e);
		f>>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()
{
	g<<ST<<'\n';
	//printf("%lld\n",ST);
}