#include using namespace std; const int N = 1e4; int n, K; long long C[N + 1]; const long long INF = (1LL << 60); long long dp[N + 1003][1003]; long long minCost(int curr, int lastOff) { //cout << curr << " " << lastOff << "\n"; if(curr - K > lastOff + 1) { return INF; } if(curr > n) { if(lastOff >= n) return 0; return INF; } // if(lastOff >= n) //return 0; long long& res = dp[curr][lastOff]; if(res != -1) { return res; } res = INF; res = min(C[curr] + minCost(curr + K + 1, curr + K), minCost(curr + 1, lastOff)); return res; } int main(int argc, char const *argv[]){ // freopen("C:\\Users\\Paramdeep Singh\\Desktop\\input.txt","r",stdin); // freopen("C:\\Users\\Paramdeep Singh\\Desktop\\output.txt","w",stdout); memset(dp, -1, sizeof(dp)); scanf("%d %d", &n, &K); for(int i = 1; i <= n; i++) { scanf("%lld", &C[i]); } // return 0; printf("%lld\n", minCost(1,0)); return 0; }