Cod sursa(job #2214418)

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

using namespace std;

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

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

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

long long int n, k;
deque <tip>dq;

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

	for (long long 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);
	}

	long long int s = 0;

	for (long long 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;
}