Cod sursa(job #807038)

Utilizator vld7Campeanu Vlad vld7 Data 3 noiembrie 2012 22:48:10
Problema Deque Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>

#define maxN 5000005

using namespace std;

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

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

int main()
{
	fscanf (f, "%d%d", &n, &k);
	for (int i = 1; i <= n; i++)
		fscanf (f, "%d", &a[i]);
	
	front = 1, back = 0;
	
	for (int i = 1; i <= n; i++) {
		while (front <= back && a[i] <= deque[back])
			back--;
		
		deque[++back] = a[i];
		
		if (deque[front] == a[i - k])
			front++;
		
		if (i >= k)
			sum += deque[front];
	}
	
	fprintf (g, "%lld\n", sum);
	
	fclose(f);
	fclose(g);
	
	return 0;
}