P1714 切蛋糕
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ll;
const ll N=1e7;
ll n,m,a[N],tr[N];
void build(ll id,ll s,ll t){
if (s==t){
tr[id]=a[s];
return ;
}
ll mid=s+t>>1;
build(id<<1,s,mid);
build(id<<1|1,mid+1,t);
tr[id]=tr[id<<1]+tr[id<<1|1];
return ;
}
ll getsum(ll id,ll l,ll r,ll s,ll t){
if (l<=s&&t<=r) return tr[id];
ll mid=s+t>>1;
ll sum=0;
if (l<=mid) sum+=getsum(id<<1,l,r,s,mid);
if (r>mid) sum+=getsum(id<<1|1,l,r,mid+1,t);
return sum;
}
int main(){
scanf("%lld%lld",&n,&m);
for (int i=1;i<=n;i++) scanf("%lld",&a[i]);
build(1,1,n);
ll ans=0;
for (int i=1;i<=n;i++){
for (int j=i;j<=min(i+m-1,n);j++){
if (i==1&&j==1) ans=getsum(1,i,j,1,n);
// printf("[%lld,%lld]:%lld\n",i,j,getsum(1,i,j,1,n));
ans=max(ans,getsum(1,i,j,1,n));
}
}
printf("%lld",ans);
}