#include using namespace std; #define int long long #define endl "\n" const int N = 1000010; int n, k; int a[N], s[N]; int ans = LONG_LONG_MAX; // 预求最小先设最大 signed main() { cin >> n >> k; for (int i = 2; i <= n; i++) { // i代表第i个城市 cin >> a[i]; // a[i]代表第i-1个城市到第i个城市需要的时间 s[i] = s[i - 1] + a[i]; // 利用前缀存储从第1个城市到第i+1个城市的累积时间 } // 感悟:代码越多,可读性越强 for (int i = 1; i <= n; i++) { // 遍历每个城市 int far = i + k; // 传送到最远的点 if (far >= n) far = n; // 最远不能超过n点 int time = s[i] + s[n] - s[far]; // s[n]-s[far]= 剩余道路需要走的时间,s[i]:前面道路需要走的时间 ans = min(ans, time); // 取最小值 } cout << ans << endl; // 输出 }