Pagini recente » Cod sursa (job #80146) | Cod sursa (job #1433668) | Cod sursa (job #3041779) | Cod sursa (job #2163952) | Cod sursa (job #2767375)
#include <iostream>
#include <deque>
#include <queue>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int main() {
long long int n, k, ans = 0, elem;
f >> n >> k;
f >> elem;
deque <int> minimumEl;
minimumEl.push_back(elem);
queue <int> firstElem;
firstElem.push(elem);
for (int i = 2; i <= n; ++i) {
int next_elem;
f >> next_elem;
while (minimumEl.size() > 0 && minimumEl.back() >= next_elem) {
minimumEl.pop_back();
}
minimumEl.push_back(next_elem);
firstElem.push(next_elem);
if (i >= k) {
ans += (long long int)minimumEl.front();
if (firstElem.front() == minimumEl.front()) {
minimumEl.pop_front();
}
firstElem.pop();
}
}
g << ans;
return 0;
}