Cod sursa(job #468111)

Utilizator joli94Apostol Adrian Alexandru joli94 Data 2 iulie 2010 12:34:29
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<cstdio>

const int N = 5000001;
int a[N],dq[N];
int st=1 , dr=0  , k;
long long int s=0;

inline void stanga(int i)
{
	if ( i-dq[st] == k ) ++st;
}

void dreapta(int i)
{
	while (st<=dr && a[dq[dr]]>=a[i] )
		--dr;
	dq[++dr] = i;
}

int main()
{
	
	freopen ("deque.in" , "r" , stdin );
	freopen ("deque.out", "w" , stdout);
	
	int n,i;
	
	scanf("%d %d",&n,&k);
	for (i=1 ; i<=n ; ++i )
	{
		scanf ("%d" , &a[i] );
		if(i>k)
			stanga(i);
		dreapta(i);
		if(i>=k)
			s+=a[dq[st]];
	}
	
	printf( "%lld\n" , s ) ;
	return 0;
}