题目在这里
#include<iostream>//未过 0 全WA
#include<cmath>// https://www.luogu.com.cn/problem/T125902
#include<cstdio>
#include<cstring>
using namespace std;
inline int read()
{
int x=0,f=1;
char c;c=getchar();
while(c<'0'||c>'9'){
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=(x<<3)+(x<<1)+(c-'0');
c=getchar();
}
return x*f;
}
const int N=1e6+5,M=1e4+5;
int k,n,m,sum[N*4],add[N*4];
void build(int k,int l,int r)
{
if(l==r){
sum[k]=read();
return;
}
int mid=l+r>>1;
build(k<<1,l,mid);
build(k<<1|1,mid+1,r);
sum[k]=sum[k<<1]+sum[k<<1|1];
}
void Add(int k,int l,int r,int v)
{
add[k]+=v;
sum[k]+=(r-l+1)*v;
return;
}
void pushdown(int k,int l,int r,int mid)
{
if(add[k]==0)return;
Add(k<<1,l,mid,add[k]);
Add(k<<1|1,mid+1,r,add[k]);
add[k]=0;
}
void change(int k,int l,int r,int x,int y,int v)
{
if(l>=x&&r<=y){
Add(k,l,r,v);
return;
}
int mid=l+r>>1;
pushdown(k,l,r,mid);
if(x<=mid)change(k<<1,l,mid,x,y,v);
if(y>mid)change(k<<1|1,mid+1,r,x,y,v);
sum[k]=sum[k<<1]+sum[k<<1|1];
}
int query(int k,int l,int r,int x,int y)
{
if(l>=x&&r<=y){
return sum[k];
}
int mid=l+r>>1,res=0;
pushdown(k,l,r,mid);
if(x<=mid)res+=query(k<<1,l,mid,x,y);
if(y>mid)res+=query(k<<1|1,mid+1,r,x,y);
return res;
}
int main()
{
int i;
n=read();
build(1,1,n);
m=read();k=read();
while(m--)
{
int x,y,v;
x=read();y=read();v=read();
change(1,1,n,x,y,v);
}
int maxx=0;
for(i=1;i<=n-k+1;i++)
{
maxx=max(maxx,query(1,1,n,i,i+k-1));
}
printf("%d",maxx);
return 0;
}