Pagini recente » Cod sursa (job #2358649) | Cod sursa (job #2576146) | Cod sursa (job #1608028) | Cod sursa (job #2875569) | Cod sursa (job #3359109)
#include <bits/stdc++.h>
using namespace std;
ifstream in("spectacole.in");
ofstream out("spectacole.out");
int main() {
int n, k;
long long s = 0;
int v[100001];
in >> n >> k;
deque<int> dq; // ținem indici
for (int i = 1; i <= n; i++) {
in >> v[i];
// eliminăm indicii care au ieșit din fereastră
while (!dq.empty() && dq.front() <= i - k) {
dq.pop_front();
}
// păstrăm deque-ul crescător după valori
while (!dq.empty() && v[dq.back()] >= v[i]) {
dq.pop_back();
}
dq.push_back(i);
// după ce avem prima fereastră completă
if (i >= k) {
s += v[dq.front()];
}
}
out << s;
return 0;
}