Cod sursa(job #779732)

Utilizator alex_unixPetenchea Alexandru alex_unix Data 18 august 2012 17:14:20
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb

#include <fstream>
#include <queue>
#include <vector>

int main (void)
{
	unsigned int n,k;
	std::ifstream input("deque.in");
	input >> n >> k;
	std::vector<signed int> numbers(n);
	std::deque<unsigned int> deque;
	signed int number;
	unsigned int iterator(0);
	do
	{
		input >> number;
		numbers[iterator] = number;
		while (!deque.empty() && number <= numbers[deque.back()])
			deque.pop_back();
		deque.push_back(iterator);
		++iterator;
	}
	while (iterator < k);
	signed long long sum(numbers[deque.front()]);
	deque.pop_front();
	while (iterator < n)
	{
		input >> number;
		numbers[iterator] = number;
		while (!deque.empty() && number <= numbers[deque.back()])
			deque.pop_back();
		deque.push_back(iterator);
		if (deque.front() == iterator - k)
			deque.pop_front();
		sum += numbers[deque.front()];
		++iterator;
	}
	input.close();
	std::ofstream output("dequeue.out");
	output << sum << '\n';
	output.close();
	return 0;
}