Pagini recente » Rezultatele filtrării | Cod sursa (job #329156) | Cod sursa (job #1929684) | Cod sursa (job #2390086) | Cod sursa (job #1376649)
#include <fstream>
using namespace std;
const int kNMax = 5000010;
int n, k, v[kNMax];
int deq[kNMax], front_dq = 1, back_dq;
long long sol;
void Citire() {
ifstream in("deque.in");
in >> n >> k;
for (int i = 1; i <= n; ++i)
in >> v[i];
in.close();
}
void Solve() {
for (int i = 0; i <= n; ++i) {
while (front_dq <= back_dq && v[i] <= v[deq[back_dq]])
--back_dq;
deq[++back_dq] = i;
if (deq[front_dq] == i - k)
++front_dq;
if (i >= k)
sol += v[deq[front_dq]];
}
}
void Afisare() {
ofstream out("deque.out");
out << sol << '\n';
out.close();
}
int main() {
Citire();
Solve();
Afisare();
return 0;
}