#include #include #include #include #include using namespace std; int main() { int i, n, k; cin >> n >> k; vector c; vector best; vector> besti; for (i = 0; i < n; i++){ long long t; cin >> t; c.push_back(t); } for (i = 0; i < n; i++){ vector answer; int opt = -1; for (int j = (-1)*k; j <= k; j++){ if (i + j < 0) answer.push_back(-1); else if (i + j >= n) answer.push_back(-1); else{ if (i == 0){ answer.push_back(c[i+j]); if (opt == -1 || opt > c[i+j]) opt = c[i+j]; } else{ if (j != k){ answer.push_back(besti[i-1][j+k+1]); if (opt == -1 || opt > besti[i-1][j+k+1]) opt = besti[i-1][j+k+1]; } else{ answer.push_back(best[i-1]+c[i+j]); if (opt == -1 || opt > best[i-1]+c[i+j]) opt = best[i-1]+c[i+j]; } } } } besti.push_back(answer); best.push_back(opt); } cout << best[n-1]; /* Enter your code here. Read input from STDIN. Print output to STDOUT */ return 0; }