Cod sursa(job #533870)

Utilizator feelshiftFeelshift feelshift Data 14 februarie 2011 19:11:27
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
// http://infoarena.ro/problema/deque
#include <fstream>
#include <vector>
#include <deque>
using namespace std;

ifstream in("deque.in");
ofstream out("deque.out");

vector<int> number;
deque<int> myDeque;

int main() {
	int numbers,lenght;
	int tmp;
	long long sum = 0;

	in >> numbers >> lenght;

	number.reserve(lenght+1);
	// pentru a evita indexarea de la zero
	number.push_back(0);

	for(int i=1;i<=numbers;++i) {
		in >> tmp;

		number.push_back(tmp);
	}

	for(int i=1;i<=numbers;++i) {
		while(!myDeque.empty() && myDeque.front() <= myDeque.back() && number[i] <= number[myDeque.back()])
				myDeque.pop_back();

		myDeque.push_back(i);

		if(myDeque.front() == i - lenght)
			myDeque.pop_front();

		if(i >= lenght)
			sum += number[myDeque.front()];
	}

	out << sum;

	in.close();
	out.close();

	return (0);
}