Pagini recente » Cod sursa (job #737027) | Cod sursa (job #524507) | Cod sursa (job #2403151) | Cod sursa (job #2504799) | Cod sursa (job #2767370)
#include <iostream>
#include <deque>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int v[1000001];
int main() {
int n, k, ans = 0;
f >> n >> k;
for (int i = 1; i <= n; ++i) {
f >> v[i];
}
deque <int> minimumEl;
minimumEl.push_back(v[1]);
deque <int>::reverse_iterator rev_it;
for (int i = 2; i <= n; ++i) {
int next_elem = v[i];
while (minimumEl.size() > 0 && minimumEl.back() >= next_elem) {
minimumEl.pop_back();
}
minimumEl.push_back(v[i]);
if (i >= k) {
ans += minimumEl.front();
}
if (v[i - k + 1] == minimumEl.front()) {
minimumEl.pop_front();
}
}
g << ans;
return 0;
}