Cod sursa(job #570972)

Utilizator yaxleyyaxley yaxley Data 3 aprilie 2011 20:21:47
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.51 kb
#include<stdio.h>
using namespace std;

int a[5000009];
int p[5000009];
int n;
long long s;
int k;	
int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	scanf("%d", &n);
	scanf("%d", &k);
	for(int i=1;i<=n;i++)
		scanf("%d", &a[i]);
	int b=0,f=1;
	for(int i=1;i<=n;i++)
	{	
		while(a[i] <= a[p[b]]  && f<=b)
			{ 	
				b--;
			}
		
		b++;
		p[b]=i;
	
	
		if(p[f] == i-k)
		{
		
		f++;
		}
		
		if(i>=k)
			s=s+a[p[f]];
		
	}

	printf("%lld", s);
return 0;
}