Pagini recente » Cod sursa (job #958409) | Cod sursa (job #1297065) | Istoria paginii runda/trala | Cod sursa (job #487664) | Cod sursa (job #2725675)
#include <cstdint>
#include <deque>
#include <fstream>
using namespace std;
int main() {
ifstream fin("deque.in");
ofstream fout("deque.out");
int n, k;
fin >> n >> k;
int64_t total = 0;
deque<pair<int64_t, int>> deq;
for (auto i = 0; i < n; i += 1) {
int64_t value;
fin >> value;
while (!deq.empty() && deq.back().second <= i - k) {
deq.pop_back();
}
while (!deq.empty() && deq.front().first >= value) {
deq.pop_front();
}
deq.push_front({value, i});
if (i >= k - 1) {
total += deq.back().first;
}
}
fout << total << "\n";
return 0;
}