#include #define pp pop_back #define pb push_back #ifdef KTL #define fname "" #else #define fname "cube." #endif #define forn(i, x, n) for (int i = int(x); i <= int(n); ++i) #define for1(i, n, x) for (int i = int(n); i >= int(x); --i) #define mp make_pair #define S second #define F first #define sz(a) (int)((a).size()) using namespace std; typedef long long ll; typedef long double ld; typedef pair PII; const int N = (int)1e5 + 5; int n, k; ll dp[N], a[N], mn[N]; int main() { #ifdef wws freopen(fname"in", "r", stdin); #endif ios_base :: sync_with_stdio(0); cin.tie(0); cin >> n >> k; for (int i = 1;i <= n;i++) { cin >> a[i]; dp[i] = 1e18; } mn[n + 1] = 1e18; for (int i = 0;i < n;i++) { int x = min(n, i + k + 1); for (int j = n;j;j--) { mn[j] = 1e18; if (j - k <= i + 1) mn[j] = min(a[j], mn[j + 1]); } //cout << "i = " << i << " dp = " << dp[i] << endl; for (int j = i + 1;j <= n;j++) { int x = max(1, j - k); dp[j] = min(dp[j], dp[i] + mn[x]); //cout << "j = " << j << " x = " << x << " dp = " << dp[j] << " mn = " << mn[x] << endl; } } cout << dp[n]; return 0; }