Pagini recente » Cod sursa (job #2216194) | Cod sursa (job #2438602) | Cod sursa (job #434672) | Cod sursa (job #1993561) | Cod sursa (job #2543471)
#include <iostream>
#include <fstream>
#define INF 2000000000
using namespace std;
ifstream fi("deque.in");
ofstream fo("deque.out");
int N, M, A[5000005], ST[5000005], DR[5000005];
int main()
{
fi >> N >> M;
for (int i = 1; i <= N; ++i)
fi >> A[i];
ST[0] = INF;
for (int i = 1; i <= N; ++i)
if (i % M == 1)
ST[i] = A[i];
else
ST[i] = min(ST[i - 1], A[i]);
DR[N + 1] = INF;
for (int i = N; i >= 1; --i)
if (i % M == 0 || i == N)
DR[i] = A[i];
else
DR[i] = min(DR[i + 1], A[i]);
long long sum = 0;
for (int i = 1; i <= N - M + 1; ++i)
sum += min(DR[i], ST[i + M - 1]);
fo << sum;
fi.close();
fo.close();
return 0;
}