Cod sursa(job #2848882)
| Utilizator | Data | 14 februarie 2022 09:27:57 | |
|---|---|---|---|
| Problema | Deque | Scor | 25 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.66 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int n, k;
fin >> n >> k;
vector<int> a(n + 1);
for (int i = 1; i <= n; ++i) {
fin >> a[i];
}
deque<int> dq;
int ans = 0;
for (int i = 1; i <= n; ++i) {
while (!dq.empty() && a[dq.front()] >= a[i]) {
dq.pop_front();
}
dq.push_front(i);
if (i >= k) {
ans += a[dq.back()];
if (dq.back() == i - k + 1) {
dq.pop_back();
}
}
}
fout << ans;
}