为什么五十啊,调了114514毫秒了
#include<iostream>
#include<cstdio>
using namespace std;
long long n,k,a[200005],dp[200005],ans=1e18,sum,h,t,q[200005];
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);sum+=a[i];
}
h=1;t=0;
q[++t]=1;
for(int i=2;i<=n;i++){
while(h<=t&&q[h]+k<i)h++;
dp[i]=dp[q[h]]+a[i];
while(h<=t&&dp[i]<dp[q[t]])t--;
q[++t]=i;
}
for(int i=n-k+1;i<=n;i++)ans=min(ans,dp[i]);
cout<<sum-ans;
return 0;
}