C++ 代码
/*切蛋糕*/
#include <iostream>
using namespace std;
const int N = 500010;
int n,m,k;
int x;
int s[N],q[N];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>x;
s[i] = s[i-1] + x;
}
int ht = 0,rr = -1;
q[++rr] = 0;
int res = 0;
for(int i=1;i<=n;i++){
if(i-q[ht]>m) ht++;
res = max(res,s[i]-s[q[ht]]);
while(ht<=rr && s[q[rr]]>=s[i]) --rr;
q[++rr] = i;
}
cout<<res<<endl;
return 0;
}