#include using namespace std; #define forn(i, n) for (int i = 0; i < (int)(n); ++i) #define fore(i, b, e) for (int i = (int)(b); i <= (int)(e); ++i) #define ford(i, n) for (int i = (int)(n) - 1; i >= 0; --i) #define pb push_back #define fi first #define se second #define all(x) (x).begin(), (x).end() typedef vector vi; typedef pair pii; typedef long long i64; typedef unsigned long long u64; typedef long double ld; typedef long long ll; // #define sz(x) int((x).size()) const int maxn = 100500; int n; i64 rmq[maxn*2]; i64 get(int l, int r) { i64 res = 1e18; l += n, r += n; while (l < r) { if (l%2 == 1) res = min(res, rmq[l]); if (r%2 == 0) res = min(res, rmq[r]); l = (l+1)/2; r = (r-1)/2; } if (l == r) res = min(res, rmq[l]); return res; } void put(int i, i64 x) { i += n; rmq[i] = min(rmq[i], x); for (i /= 2; i; i /= 2) rmq[i] = min(rmq[i*2], rmq[i*2+1]); } int k; int c[maxn]; i64 d[maxn]; vector act[maxn]; // cost, l i64 solved() { i64 mn = 1e18; forn(mask, 1<> n >> k; forn(i, n) cin >> c[i]; i64 res = 1e18; forn(st, min(k+1, n)) { i64 s = 0; bool ok = true; for (int i = st; ; i += 2*k+1) { s += c[i]; if (abs((n-1) - i) <= k) { ok = i < n; break; } } if (ok) res = min(res, s); } cout << res << endl; // int t =solved(); // cerr << t << endl; // assert(res == t); #ifdef LOCAL cerr << "Time elapsed: " << clock() / 1000 << " ms" << endl; #endif return 0; }