Cod sursa(job #2214413)

Utilizator dahaandreiDaha Andrei Codrin dahaandrei Data 18 iunie 2018 23:08:13
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#include <deque>

using namespace std;

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

const int MAXN = 5e6;
const int MAXK = 5e6;

struct tip {
	int poz;
	int val;
}nr;

int n, k;
deque <tip>dq;

int main() {
	in >> n >> k;

	for (int i = 1; i < k; ++ i) {
		in >> nr.val;
		nr.poz = i;

		while (dq.size() && dq.back().val >= nr.val) dq.pop_back();
		dq.push_back(nr);
	}

	int s = 0;

	for (int i = k; i <= n; ++ i) {
		in >> nr.val;
		nr.poz = i;
		while (dq.size() && dq.front().poz <= i - k) dq.pop_front();
		while (dq.size() && dq.back().val >= nr.val) dq.pop_back();
		dq.push_back(nr);
		s += dq.front().val;
	}

	out << s;

	return 0;
}