Cod sursa(job #492019)

Utilizator crushackPopescu Silviu crushack Data 13 octombrie 2010 11:04:21
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <stdio.h>
#include <deque>
#define NMax 5000000
using namespace std;

const char IN[]="deque.in",OUT[]="deque.out";
typedef long long ll;

int N,K;
ll sol;
int a[NMax];

int main()
{
	int i,x;
	deque<int> de;
	freopen(IN,"r",stdin);
	scanf("%d%d",&N,&K);
	for (i=0;i<N;i++)
	{
		scanf("%d",a+i);
		x=a[i];
		while (!de.empty() && (x<a[de.back()] || i-de.back()>=K))
			de.pop_back();
		de.push_back(i);
		while (!de.empty() && i-de.front()>=K)
			de.pop_front();
		if (i>=K-1)
			sol+=a[de.front()];
	}
	return 0;
}