#include using namespace std; #define vec vector #define ALL(x) (x).begin(), (x).end() #define mp make_pair #define mt make_tuple typedef pair< int, int > pii; typedef long long ll; typedef unsigned long long ull; typedef long double ld; int const inf = 1000 * 1000 * 1000; ll const inf64 = 1ll * inf * inf; int const N = 10005; int n, k; int cost[N]; ll dp[N]; bool solve() { for(int i = 0;i < N;i++) dp[i] = inf64; scanf("%d %d", &n, &k); for(int i = 1;i <= n;i++) { scanf("%d", &cost[i]); if(i - k <= 1) dp[i] = cost[i]; else { for(int j = i - 1;j >= 1 && j + k + 1 >= i - k;j--) { dp[i] = min(dp[i], dp[j] + cost[i]); } } } ll res = inf64; for(int i = 1;i <= n;i++) { if(i + k >= n) { res = min(res, dp[i]); } } //printf("%lld\n", res); cout << res << "\n"; return true; } int main() { #ifdef MY while(solve()); #else solve(); #endif return 0; }