Cod sursa(job #523538)

Utilizator matei_cChristescu Matei matei_c Data 18 ianuarie 2011 15:32:47
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<stdio.h>

int n,k,p;
int v[5000001],x[5000001],t[5000001];
long long suma;
int main()
{
	int i,num;
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(i=1;i<=n;i++)
		scanf("%d",&v[i]);
	num=1;
	x[1]=v[1];
	t[1] = 1;
	p=1;
	int first = 1, last = 1;	
	for(i=2;i<=n;i++)
	{
		num++;
		
		while(v[i] < x[last] && last >= first)
			last--;
		x[ ++last ] = v[ i ];
		t[ last ] = i;
		if( t[ first ] + k <= i ) first++;
		if(i>=k)
			suma+=x[first];
	}	
	printf("%lld\n",suma);
	return 0;
}