Cod sursa(job #1051368)

Utilizator rucarRucareanu Alexandru rucar Data 9 decembrie 2013 22:54:03
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdlib.h>
#include <stdio.h>
#include <deque>

struct str{
	int val, ies;
};

int main()
{
	FILE *f = fopen("deque.in", "r"), *g = fopen("deque.out", "w");
	int i, n, k, x;
	fscanf(f, "%d%d", &n, &k);
	std::deque <str> q;
	i = 1;
	long long total=0;
	while (i <= n)
	{
		fscanf(f, "%d", &x);
		str elem;
		if (!q.empty())
		   elem = q.back();
		while (!q.empty() && x <= elem.val)
		{
			q.pop_back();
			if (!q.empty())
			    elem = q.back();
		}
		elem.val = x;
		elem.ies = i + k;
		q.push_back(elem);
		elem = q.front();
		if (elem.ies == i)
			q.pop_front();
		if (!q.empty())
		   elem = q.front();
		if (i>=k) total += elem.val;
		i++;
	}
	fprintf(g, "%lld", total);
	fclose(f); fclose(g);
	return 0;
}