Cod sursa(job #990441)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 28 august 2013 12:25:27
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <cstdio>

using namespace std;

int q[5000005],poz[5000005];

int main()
{
	int n,k,x,pr,ul,i;
	long long sol;
	freopen ("deque.in","r",stdin);
	freopen ("deque.out","w",stdout);
	scanf("%d%d", &n,&k);
	sol=0;
	q[0]=-20000000;pr=1;ul=0;
	for(i=1;i<=k;i++)
	{
		scanf("%d", &x);
		while(pr<=ul && x<=q[ul])
			ul--;
		q[++ul]=x;
		poz[ul]=i;
	}
	sol+=q[pr];
	for(i=k+1;i<=n;i++)
	{
		scanf("%d", &x);
		while((poz[pr]+k)<(i+1))
			pr++;
		while(pr<=ul && x<=q[ul])
			ul--;
		q[++ul]=x;
		poz[ul]=i;
		sol+=q[pr];
	}
	printf("%lld\n", sol);
	return 0;
}