https://www.luogu.com.cn/problem/U289938
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define re read()
inline int read(){
int x=0,b=1;char c=getchar();
while(!isdigit(c)){if(c=='-') b=-1;c=getchar();}
while(isdigit(c)){x=x*10+c-'0';c=getchar();}
return x*b;
}
const int N=200007;
int n,m,a[N],b[N],y=-1e18,p;
int zhan[N],head,tail,maxx;
signed main(){
n=re;m=re;
for(int i=1;i<=n;++i) {
a[i]=re,b[i]=b[i-1]+a[i];
if(a[i]>0) p=1;
y=max(y,a[i]);
}
for(int i=0;i<=n;++i){
while(head<=tail&&zhan[head]<i-m) ++head;
while(head<=tail&&b[zhan[head]]>=b[i]) --tail;
zhan[++tail]=i;
maxx=max(maxx,b[i]-b[zhan[head]]);
}
if(p) cout<<maxx;
else cout<<y;
return 0;
}