Cod sursa(job #672571)

Utilizator boggy2411Bogdan Ciomaga boggy2411 Data 2 februarie 2012 16:27:24
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<stdio.h>
#include<cmath>

using namespace std;

struct POINT
{
	int x, i;
};

POINT q[5000001];

int n, x, u, p, k;
long long min;

int main()
{
	int i;
	
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	
	scanf("%d%d", &n, &k);
	
	scanf("%d", &q[1].x);
	
	q[1].i=1;
	p=1;
	u=1;
	for(i=2; i<=n; i++)
	{
		scanf("%d", &x);
		
		while(p<=u && q[u].x>=x)
		{
			u--;
		}
		
		q[++u].x=x;
		q[u].i=i;
		
		if(i-q[p].i==k)
		{
			p++;
		}
		
		if(i>=k)
		{
			min+=q[p].x;
		}
	}
	
	printf("%lld", min);
	
	return 0;
}