Pagini recente » Monitorul de evaluare | Cod sursa (job #1412584) | Cod sursa (job #3325757) | Cod sursa (job #1412603) | Cod sursa (job #3318738)
#include <iostream>
#include <fstream>
#include <stdint.h>
const int32_t MAX_N = 5000000;
int32_t vec[MAX_N];
int32_t deq[MAX_N], st = 0, dr = 0;
int main() {
std::ifstream fin("deque.in");
std::ofstream fout("deque.out");
int32_t n, k;
fin >> n >> k;
for(int32_t i = 0; i != n; ++i)
fin >> vec[i];
int64_t res = 0;
for(int32_t i = 0; i != n; ++i) {
while(st != dr && vec[deq[dr - 1]] >= vec[i])
--dr;
deq[dr++] = i;
while(deq[st] <= i - k)
++st;
if(i - k + 1 >= 0)
res += vec[deq[st]];
}
fout << res << '\n';
fin.close();
fout.close();
return 0;
}