Cod sursa(job #2606886)

Utilizator AlexNeaguAlexandru AlexNeagu Data 28 aprilie 2020 20:17:01
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int nax = 5000005;
ifstream in("deque.in");
ofstream out("deque.out");
int n, k;
int a[nax];
deque < int > dq;
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	in >> n >> k;
	for (int i = 1; i <= n; i++) {
		in >> a[i];
	}
	for (int i = 1; i <= k; i++) {
		while(dq.size() && a[dq.back()] >= a[i]) {
			dq.pop_back();
		}
		dq.push_back(i);
	}
	ll ans = a[dq.front()];
	for (int i = k + 1; i <= n; i++) {
		if (dq.front() == i - k) {
			dq.pop_front();
		}
		while(dq.size() && a[dq.back()] >= a[i]) {
			dq.pop_back();
		}
		dq.push_back(i);
		ans += a[dq.front()];
	}
	out << ans << '\n';
	return 0;
}