Cod sursa(job #1367764)

Utilizator MarronMarron Marron Data 2 martie 2015 08:35:31
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <fstream>
#include <deque>


typedef long long int64;


const int INF = 0x3f3f3f3f;
std::ifstream f("deque.in");
std::ofstream g("deque.out");
std::deque< std::pair<int, int> > dq;


int main()
{
	int n, k;
	f >> n >> k;
	for (int i = 1, x; i < k; i++) {
		f >> x;

		while (!dq.empty() && dq.back().first >= x) dq.pop_back();
		dq.push_back(std::make_pair(x, i));
	}

	
	int64 sol = 0;
	for (int i = k, x; i <= n; i++) {
		f >> x;

		while (!dq.empty() && dq.back().first >= x) dq.pop_back();
		dq.push_back(std::make_pair(x, i));

		if (dq.front().second <= i - k) dq.pop_front();
		sol += 1LL * dq.front().first;
		std::cout << sol << '\n';
	}
	g << sol << std::endl;


	f.close();
	g.close();
	return 0;
}