Cod sursa(job #367642)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 22 noiembrie 2009 23:42:22
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<stdio.h>
#define Nmax 5000020

long long S;
int D[Nmax], V[Nmax];
int i, p, u, k, n;


FILE * f = fopen ("deque.in", "r");
FILE * g = fopen ("deque.out", "w");

int main () {
	
	fscanf(f, "%d %d", &n, &k);
	for (i = 1 ; i <= n ; i++)
		fscanf (f, "%d", &V[i]);
	
	for (i = 1 ; i <= n ; i++) {
		
		while ( p <= u && V[i] <= V[D[u]] ) 
			u--;
		
		D[++u] = i;
		
		if (D[p] == i-k) {
			D[p] = 0; 
			p++;
		}
		
		if (i >= k) 
			S += V[D[p]];
	}
	
	fprintf (g, "%lld", S);
	
	
	fclose(f);
	fclose(g);
	return 0;
	
}