写了个线段树板子,洛谷IDE可以正常运行,交上去也能AC,但本地就是运行不了,求助一下问题出在哪了
#include<bits/stdc++.h>
#define ll long long
#define lowbit(x) (x&(-x))
#define mem(a,b) memset(a,b,sizeof a)
#define rev(x) reverse(x.begin(),x.end())
using namespace std;
const int MAX_SIZE=100010;
struct SegmentTree{
struct{int l,r;long long sum,lz_add;}t[MAX_SIZE*4];
void build(int l,int r,long long a[],int p=1){
t[p].l=l;
t[p].r=r;
t[p].lz_add=0ll;
if(l==r) t[p].sum=a[l];
else{
int mid=(l+r)>>1;
build(l,mid,a,p<<1);
build(mid+1,r,a,p<<1|1);
t[p].sum=t[p<<1].sum+t[p<<1|1].sum;
}
}
void pushdown(int p){
t[p<<1].sum+=(t[p<<1].r-t[p<<1].l+1)*t[p].lz_add;
t[p<<1].lz_add+=t[p].lz_add;
t[p<<1|1].sum+=(t[p<<1|1].r-t[p<<1|1].l+1)*t[p].lz_add;
t[p<<1|1].lz_add+=t[p].lz_add;
t[p].lz_add=0ll;
}
void change(int l,int r,long long val,int p=1){
if(l<=t[p].l&&t[p].r<=r){
t[p].sum+=(t[p].r-t[p].l+1)*val;
t[p].lz_add+=val;
}else{
pushdown(p);
int mid=(t[p].l+t[p].r)>>1;
if(l<=mid) change(l,r,val,p<<1);
if(r>mid) change(l,r,val,p<<1|1);
t[p].sum=t[p<<1].sum+t[p<<1|1].sum;
}
}
long long query(int l,int r,int p=1){
if(l<=t[p].l&&t[p].r<=r) return t[p].sum;
pushdown(p);
unsigned int mid=(t[p].l+t[p].r)>>1;
long long res=0;
if(l<=mid) res+=query(l,r,p<<1);
if(r>mid) res+=query(l,r,p<<1|1);
return res;
}
};
int n,m;
ll lis[100010];
int main(){
// ios::sync_with_stdio(false);
// cin.tie(0),cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>lis[i];
SegmentTree a;
a.build(1,n,lis);
while(m--){
int op;cin>>op;
if(op==1){
ll x,y,k;cin>>x>>y>>k;
a.change(x,y,k);
}else{
ll x,y;cin>>x>>y;
cout<<a.query(x,y)<<endl;
}
}
return 0;
}