Pagini recente » Cod sursa (job #2366175) | Cod sursa (job #741929) | Cod sursa (job #2779657) | Cod sursa (job #1471819) | Cod sursa (job #2550267)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("deque.in");
ofstream out("deque.out");
int N, K;
long long sum;
int A[5000001];
int ST[5000001], DR[5000001];
int main() {
in >> N >> K;
for (int i=1; i<=N; ++i) {
in >> A[i];
if (i%K == 1)
ST[i] = A[i];
else
ST[i] = min(ST[i-1], A[i]);
}
int ind = N;
DR[ind] = A[ind];
--ind;
while (ind%K != 0) {
DR[ind] = min(DR[ind+1], A[ind]);
--ind;
}
for (int i=ind; i>=1; --i) {
if (i%K == 0)
DR[i] = A[i];
else
DR[i] = min(DR[i+1], A[i]);
}
int st = 1;
int dr = K;
while (dr <= N) {
int min_curent = min(DR[st], ST[dr]);
sum += min_curent;
++st;
++dr;
}
out << sum;
return 0;
}