Pagini recente » Cod sursa (job #2094001) | Cod sursa (job #2778755) | Cod sursa (job #1568098) | Cod sursa (job #2972142) | Cod sursa (job #2548258)
#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;
}