Pagini recente » Cod sursa (job #3352866) | Cod sursa (job #1165635) | Cod sursa (job #760900) | Cod sursa (job #614465) | Cod sursa (job #3345861)
#include <iostream>
#include <deque>
using namespace std;
class Solver {
int K;
int index;
std::deque<std::pair<int, int>> dq;
public:
explicit Solver(int K_) : K{K_}, index{1} {}
void appendValue(int value) {
while (dq.size() && (
dq.back().first > value ||
dq.back().second < index - K
)) dq.pop_back();
dq.emplace_back(value, index);
index++;
}
int getMin() {
while (dq.size() && dq.front().second < index - K)
dq.pop_front();
return dq.front().first;
}
};
int32_t main() {
// #define LOCAL
#ifndef LOCAL
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
#endif
int n, k; cin >> n >> k;
Solver solver{k};
long long sumOfMins = 0;
for (int i = 1; i <= n; i++) {
int value; cin >> value;
solver.appendValue(value);
if (i >= k) sumOfMins += solver.getMin();
}
cout << sumOfMins;
}