Cod sursa(job #304835)

Utilizator cvicentiuCiorbaru Vicentiu Marian cvicentiu Data 15 aprilie 2009 14:19:23
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
//Arhiva Educationala - Deque
#include <stdio.h>
#define MaxN 5000001
long long v[MaxN],n,k,suma;
long long deque[MaxN];
int cap, coada;
FILE *f=fopen("deque.in","r");
FILE *g=fopen("deque.out","w");

int main(){
	fscanf(f,"%d %d",&n,&k);
	for(int i = 1; i <= n; i++)
		fscanf(f,"%d\n",&v[i]);

	cap = 1;
	coada = 0;

	for(int i = 1; i <= n; i++){
		
		while ( cap <= coada && v[i] <= v[ deque[coada] ]) --coada;
		
		deque[++coada] = i;

		if (deque[cap] == i-k) cap++;

		if (i >= k) suma += v[ deque[cap] ];
	};
	printf("%lld",suma);
	


};