Pagini recente » Cod sursa (job #759941) | Cod sursa (job #759945) | Borderou de evaluare (job #2868770) | Cod sursa (job #763499) | Cod sursa (job #3301504)
// https://infoarena.ro/problema/deque
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <functional>
#include <deque>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
struct cmp {
bool operator()(const pair<int, int>& a, const pair<int, int>& b) {
return a.first > b.first;
}
};
int main() {
int n, k;
f >> n >> k;
vector<int> a(n);
for (int i = 0; i < n; i++) {
f >> a[i];
}
priority_queue<pair<int, int>, vector<pair<int, int>>, cmp> mind;
long long ans = 0;
for (int i = 0; i < n; i++) {
mind.push({a[i], i});
while (mind.top().second < i - k + 1) {
mind.pop();
}
if (!mind.empty() && i >= k - 1) {ans += (int)mind.top().first;}
}
g << ans;
g.close();
return 0;
}