Cod sursa(job #878429)

Utilizator howsiweiHow Si Wei howsiwei Data 14 februarie 2013 14:57:40
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>
#include <deque>
#include <utility>
using namespace std;
typedef pair<int,int> ii;

int main() {
	ifstream fin("deque.in");
	ofstream fout("deque.out");
	int n, k;
	fin >> n >> k;
	deque<ii> mayuse;//first:pos, second:value
	long long sum=0;
	for (int i=0,a; i<n; ++i) {
		fin >> a;
		while (!mayuse.empty() && a<=mayuse.back().second)
			mayuse.pop_back();
		mayuse.push_back(ii(i,a));
		if (mayuse.front().first<=i-k) mayuse.pop_front();
		if (i>=k-1) sum+=mayuse.front().second;
	}
	fout << sum;
	return 0;
}