Cod sursa(job #485676)

Utilizator GodiesVlad Voicu Godies Data 19 septembrie 2010 09:48:00
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <cstdio>
#include <cstdlib>
#include <deque>
#include <iostream>

#define NMAX 5000001

using namespace std;

long v[NMAX];

int main()
{
	FILE *f, *g;
	long k, n, i;
	deque <long> list;
	long long sum = 0;
	f = fopen("deque.in" , "rt");
	g = fopen("deque.out", "wt");
	fscanf (f, "%ld", &n);
	fscanf (f, "%ld", &k);
	for (i = 0; i < n; i++) {
		fscanf (f, "%ld", &v[i]);
	}
	for (i = 0; i < n; i++) {
		while ((!list.empty()) && (v[list.back()] >= v[i]))
			list.pop_back();
		list.push_back(i);
		if (list.front() <= i - k) {
			list.pop_front();
		}
		if (i >= k - 1) {
			sum+= v[list.front()];
		}
	}
	fprintf(g, "%lld", sum);
	return 0;
}