就离谱
#include<bits/stdc++.h>
using namespace std;
int n, k, a[100005];
long long s, ans=1e18, f[100005]; // f:前 i 个数满足条件不选的最小值
int main() {
scanf("%d%d", &n, &k);
for(int i=1; i<=n; i++) scanf("%d", &a[i]), s+=a[i];
for(int i=1; i<=k; i++) f[i]=a[i];
for(int i=k+1; i<=n; i++) {
f[i]=1e18;
for(int j=i-k-1; j<i; j++) f[i]=min(f[i], f[j]);
f[i]+=a[i];
}
for(int i=n-k; i<=n; i++) ans=min(ans, f[i]);
printf("%lld", s-ans);
return 0;
}