Cod sursa(job #263717)

Utilizator ooctavTuchila Octavian ooctav Data 20 februarie 2009 19:29:31
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <stdio.h>



int n, k;
int a[5000001], deque[5000001];
int front, back;
long long suma;

int main()
{
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	int i;
	scanf("%d %d ",&n,&k);
	for (i=1; i<=n; i++) 
		scanf("%d ", &a[i]);
	front=1;
	back=0;
	for(i=1;i<=n;i++)
	{
		while (front<=back && a[i]<=a[deque[back]]) 
			back--;		
		deque[++back]=i;
		if (deque[front]==i-k) 
			front++;
		if (i>=k)
			suma=suma+a[deque[front]]; 	
	}
	printf("%lld\n", suma);
	return 0;
}