#include #include #include #include #include using namespace std; int main() { int n,k; cin >> n >> k; vector c(n); for (int i = 0; i < n; i++) { cin >> c[i]; } vector pmustnotoverlap(n); vector pmayoverlap(n); for (int i = 0; i < n; i++) { if (i-k < 0) { pmustnotoverlap[i] = 0x7FFFFFFFFFFFFFFF; } else { pmustnotoverlap[i] = c[i-k]; int r = i-2*k-1; if (r >= 0) { if (pmustnotoverlap[r] == 0x7FFFFFFFFFFFFFFF) pmustnotoverlap[i] = pmustnotoverlap[r]; else pmustnotoverlap[i] += pmustnotoverlap[r]; } } //cout << pmustnotoverlap[i] << endl; } for (int i = 0; i < n; i++) { long m = 0x7FFFFFFFFFFFFFFF; for (int j = i-k; j <= i+k; j++) { if (j < 0 || j >= n) continue; //turn on light j long cc = c[j]; //turn on rest int r = j-k-1; if (r >= 0) { if (pmustnotoverlap[r] == 0x7FFFFFFFFFFFFFFF) continue; cc += pmustnotoverlap[r]; } m = min(m, cc); } pmayoverlap[i] = m; //cout << pmayoverlap[i] << endl; } cout << pmayoverlap[n-1]; }