#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define endl "\n" #ifndef MAIN_BEGIN #define START_TIMER(...) #define TIMESTAMP(...) #define MAIN_BEGIN int main() { \ ios::sync_with_stdio(false); #define RETURN return 0 #define MAIN_END RETURN; } #define OUTPUT if(false) cout #endif MAIN_BEGIN int n; cin >> n; int k; cin >> k; vector c(n); for(auto& i : c) cin >> i; if(k == 0) { cout << accumulate(c.begin(), c.end(), 0LL); RETURN; } long long best = 999999999999LL; for(int a=0; a<=k; a++) { if(a >= n) break; long long cost = c[a]; long long current = a; long long lastCovered = a+k; bool did = true; while(lastCovered < n-1) { lastCovered += 2*k+1; current += 2*k+1; if(current >= n) { did = false; break; } cost += c[current]; } if(did) { if(cost < best) best = cost; } } cout << best; MAIN_END