#include using namespace std; typedef long long ll; #define NMAX 10005 int cost[NMAX]; int n, k; ll dp[NMAX]; ll solve(int i) { if (i >= n) { //printf("|-> %d\n", i); return 0; } if (dp[i] != -1) return dp[i]; ll best = 1e18; //printf("!! %d\n", i); int j = i - k; while (j < 0) j++; for (; j <= i + k && j < n; j++) { best = min(best, solve(j + k + 1) + cost[j]); //printf("::%d (%d -> %d) %lld (%d)\n", j, i, j + k + 1, solve(j + k + 1) + cost[j], cost[j]); } //printf("-- %d %lld\n", i, best); return dp[i] = best; } int main() { while (scanf("%d %d", &n, &k) != EOF) { for (int i = 0; i < n; i++) scanf("%d", &cost[i]); memset(dp, -1, sizeof dp); printf("%lld\n", solve(0)); } return 0; }