Cod sursa(job #765923)

Utilizator igsifvevc avb igsi Data 9 iulie 2012 19:20:38
Problema Deque Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.55 kb
#include <stdio.h>

int n, k, i, front, back, deque[5000007], a[5000007];
long long int sum;
FILE *in, *out;

int main()
{
	in = fopen("deque.in", "r");
	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 + 1 >= k) 
			sum += a[ deque[front] ];
	}
	
	fprintf(out, "%lld\n", sum);
	fclose(in);
	fclose(out);
	return 0;	
}