Cod sursa(job #350664)

Utilizator IoannaPandele Ioana Ioanna Data 25 septembrie 2009 11:29:59
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<stdio.h>
#define nmax 5000010
#define inf 10000010
long n,q[nmax],p[nmax],k;
long long s;

void read()
{
	scanf("%ld%ld",&n,&k);
}

void rez()
{
	long i,st,dr,x;
	st=dr=1;
	q[dr]=inf;
	for (i=1;i<k;i++)
	{
		scanf("%ld",&x);
		while (q[dr]>=x && dr>=st)
		{
			dr--;
		}
		q[++dr]=x;
		p[dr]=i;
	}
	for (i=k;i<=n;i++)
	{
		scanf("%ld",&x);
		while (q[dr]>=x && dr>=st)
		{
			dr--;
		}
		q[++dr]=x;
		p[dr]=i;
		if (p[st]<i-k+1)
			st++;
    	s+=q[st];
		
	}
	printf("%lld",s);
}

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