Cod sursa(job #818996)

Utilizator unholyfrozenCostea Andrei unholyfrozen Data 18 noiembrie 2012 13:49:45
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>

int main()
{
	ifstream read ("deque.in", ifstream::in);
	ofstream out ("deque.out", ofstream::out);	
	
	int N, K, start_deq, end_deq;
	int* Array;
	int* Deque;
	long long sum = 0;
	
	read >> N >> K;
	Array = new int[N];
	Deque = new deq_elem[N];
	start_deq = 0, end_deq = -1;

	for (int i = 0; i < N; i++)
		read >> Array[i];
	
	for (int i = 0; i < N; i++) {
		/* verify if top of deque is outside the range */
		if (start_deq <= end_deq && Deque[start_deq] <= i - K)
			start_deq++;
		
		/* insert current element into deque */
		while (end_deq >= start_deq && Array[Deque[end_deq]] > Array[i])
			end_deq--;
		Deque[++end_deq] = i;		
	
		if (i + 1 >= K)
			sum += Array[Deque[start_deq]];
	}

	write << sum << endl;
	return 0;
}