#include<bits/stdc++.h>
typedef long long LL;
using namespace std;
const int maxn=2e5+10;
const LL mod=1e4+7;
const double pi=acos(-1.0);
LL n,k;
LL a[maxn];
LL dp[maxn];
LL sum[maxn];
int st[maxn];
int main()
{
scanf("%lld%lld",&n,&k);
for(LL i=1;i<=n;i++){
scanf("%lld",&a[i]);
sum[i]=sum[i-1]+a[i];
}
LL l=0,r=0;
for(LL i=1;i<=n;i++){
while(i-st[l]>k&&l<=r){
l++;
}
dp[i]=max(dp[i-1],dp[st[l]-1]-sum[st[l]]+sum[i]);
while(l<=r&&dp[st[r]-1]-sum[st[r]]<=dp[i-1]-sum[i]){
r--;
}
st[++r]=i;
}
printf("%lld\n",dp[n]);
return 0;
}
#10177. 「一本通 5.5 例 3」修剪草坪
最新推荐文章于 2023-11-18 20:26:51 发布