Pagini recente » Cod sursa (job #345021) | Borderou de evaluare (job #786970) | Cod sursa (job #1153089) | Rezultatele filtrării | Cod sursa (job #1779060)
#include <fstream>
#include <deque>
#include <stdint.h>
int val[5000010];
int main()
{
int32_t n,k;
int64_t sum = 0;
std::deque<int32_t> solve;
std::ifstream fin("deque.in");
fin >> n >> k;
for (int32_t i = 0; i < n; ++i)
fin >> val[i];
fin.close();
for (int32_t i = 0; i < n; ++i)
{
while (!solve.empty() && val[i] <= val[solve.back()])
solve.pop_back();
solve.push_back(i);
if (solve.front() <= i-k)
solve.pop_front();
if (i >= k-1)
sum += val[solve.front()];
}
std::ofstream fout("deque.out");
fout << sum;
fout.close();
return 0;
}