Pagini recente » Diferente pentru utilizator/b_o08 intre reviziile 1 si 3 | Cod sursa (job #1320566) | Cod sursa (job #916567) | Cod sursa (job #1502730) | Cod sursa (job #3357923)
#include <iostream>
#include <fstream>
#include <vector>
#include <deque>
int main() {
std::ifstream input("deque.in");
std::ofstream output("deque.out");
int n, k;
std::vector<int> a;
input >> n >> k;
long long ans = 0;
for (int i = 1; i <= n; ++i) {
int x;
input >> x;
a.push_back(x);
}
std::deque<int> deque;
for (int i = 0; i < n; ++i) {
while (!deque.empty() && a[i] >= a[deque.back()]) deque.pop_back();
deque.push_back(i);
if (deque.front() == i - k) deque.pop_front();
if (i >= k - 1) ans += a[deque.front()];
}
output << ans;
return 0;
}