Pagini recente » Cod sursa (job #2290334) | Cod sursa (job #2018781) | Cod sursa (job #1235485) | Cod sursa (job #2294512) | Cod sursa (job #1260543)
#include <fstream>
#include <iostream>
#include <vector>
long long getSum(const std::vector<int> &v, int K)
{
std::vector<int> deque(v.size());
long long sum = 0;
int front = 0, back = -1;
for (int i = 0; static_cast<std::size_t>(i) < v.size(); ++i) {
while (front <= back && v[deque[back]] >= v[i])
--back;
deque[++back] = i;
if (deque[front] == i - K)
++front;
if (i >= K - 1)
sum += static_cast<long long>(v[deque[front]]);
}
return sum;
}
int main()
{
std::ifstream fin("deque.in");
std::ofstream fout("deque.out");
int N, K;
fin >> N >> K;
std::vector<int> v(N);
for (auto &i : v)
fin >> i;
fout << getSum(v, K);
return 0;
}