Pagini recente » Cod sursa (job #2607099) | Cod sursa (job #365291) | Cod sursa (job #598369) | Cod sursa (job #525506) | Cod sursa (job #2553830)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int n, k;
vector<vector<int>> M;
void Rmq()
{
int e = 1, p = 2;
while (p < k)
{
for (int i = 0; i < n - p + 1; ++i)
M[e][i] = min(M[e - 1][i], M[e - 1][i + (p >> 1)]);
++e;
p <<= 1;
}
}
int main()
{
fin >> n >> k;
int e = 0, p = 1;
while (p < k)
{
M.emplace_back(vector<int>(n - p + 1));
++e;
p <<= 1;
}
for (int i = 0; i < n; ++i)
fin >> M[0][i];
Rmq();
long long s = 0;
--e, p >>= 1;
for (int i = 0; i < n - k + 1; ++i)
s += min(M[e][i], M[e][i + k - p]);
fout << s;
return 0;
}