Cod sursa(job #779762)

Utilizator alex_unixPetenchea Alexandru alex_unix Data 18 august 2012 18:23:05
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb

#include <cstdio>

int main (void)
{
	std::freopen("deque.in","r",stdin);
	std::freopen("deque.out","w",stdout);
	unsigned int n,k;
	std::scanf("%u%u",&n,&k);
	signed int *numbers(new signed int [n]);
	unsigned int *deque(new unsigned int [n]);
	signed int number, *number_ptr(&number);
	signed int front(0), back(-1); // empty deque
	unsigned int iterator(0);
	do
	{
		std::scanf("%d",number_ptr);
		numbers[iterator] = number;
		while (front <= back && number <= numbers[deque[back]])
			--back;
		++back;
		deque[back] = iterator;
		++iterator;
	}
	while (iterator < k);
	signed long long sum(numbers[deque[front]]);
	while (iterator < n)
	{
		std::scanf("%d",number_ptr);
		numbers[iterator] = number;
		while (front <= back && number <= numbers[deque[back]])
			--back;
		++back;
		deque[back] = iterator;
		if (deque[front] == iterator - k)
			++front;
		sum += numbers[deque[front]];
		++iterator;
	}
	/*
	delete [ ] numbers;
	delete [ ] deque;
	*/
	std::fclose(stdin);
	std::printf("%lld\n",sum);
	std::fclose(stdout);
	return 0;
}