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