Cod sursa(job #761033)

Utilizator igsifvevc avb igsi Data 24 iunie 2012 14:41:28
Problema Deque Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.54 kb
#include <stdio.h>

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

main(void)
{
	FILE *in = fopen("deque.in", "r");
	FILE *out = fopen("deque.out", "w");
	
	fscanf(in, "%d %d", &n, &k);
	for(i = 0; i < n; i++)
		fscanf(in, "%d", &a[i]);
	back = -1;
	for(i = 0; i < n; ++i)
	{
		while(front <= back && a[i] <= a[ deque[back] ]) 
			back--;
		deque[ ++back ] = i;
		if(deque[front] == i - k)
			++front;
		if(i >= (k - 1))
			sum += a[ deque[front] ];
	}
	
	fprintf(out, "%lld\n", sum);
	fclose(in);
	fclose(out);
	return 0;	
}