Cod sursa(job #1076781)

Utilizator roby2001Sirius roby2001 Data 10 ianuarie 2014 16:15:12
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
/*
          ~Keep It Simple!~
*/
  
#include <stdio.h>

#define Mn 5000005
 
int n,m;
int A[Mn],Deque[Mn];

int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);

	scanf("%d%d",&n,&m);

	for(int i=1;i<=n;i++)
		scanf("%d",&A[i]);

	long long s = 0;
	int Front = 1, Back = 0;

	for(int i=1; i<=n; i++)
	{
		while( Front <= Back && A[i] <= A[Deque[Back]]) 
			Back--;

		Deque[++Back] = i;

		if( i-m == Deque[Front] )
			Front++;

		if( i>=m )
			s += A[Deque[Front]];

	}

	printf("%d",s);
}