#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, k; cin >> n >> k; vector<long long> a(n); // a[1..n-1]有效,a[0] unused for (int i = 1; i <= n-1; ++i) { cin >> a[i]; } // 前缀和数组:prefix[i] = a[1] + a[2] + ... + a[i] vector<long long> prefix(n, 0); for (int i = 1; i <= n-1; ++i) { prefix[i] = prefix[i-1] + a[i]; } long long total = prefix[n-1]; // 不使用跃迁的总耗时 long long max_save = 0; for (int i = 1; i <= n; ++i) { // 计算向左跃迁的节省 int left = max(1, i - k); if (left < i) { // 跃迁后位置在左侧,有节省 long long save = prefix[i-1] - prefix[left-1]; max_save = max(max_save, save); } // 计算向右跃迁的节省 int right = min(n, i + k); if (right > i) { // 跃迁后位置在右侧,有节省 long long save = prefix[right-1] - prefix[i-1]; max_save = max(max_save, save); } } cout << total - max_save << endl; return 0; }