#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
inline ll read() {
ll x=0,f=1;char ch=getchar();
while(!isdigit(ch)) {if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch)) {x=x*10+ch-48;ch=getchar();}
return x*f;
}
ll n,m,sum,k,a[100005],Node[400005],lazy[400005];
void Push(int t,int len) {
if(lazy[t]) {
lazy[2*t]+=lazy[t];
lazy[2*t+1]+=lazy[t];
Node[2*t]+=(len-len/2)*lazy[t];
Node[2*t+1]+=len/2*lazy[t];
lazy[t]=0;
}
}
void Build(int t,int l,int r) {
if(l==r) {
Node[t]=a[l];
return ;
}
int mid=(l+r)/2;
Build(2*t,l,mid);
Build(2*t+1,mid+1,r);
Node[t]=Node[2*t]+Node[2*t+1];
}
void Query(int t,int l,int r,int ll,int rr) {
if(ll<=l&&r<=rr) {
sum+=Node[t];
return ;
}
Push(t,r-l+1);
int mid=(l+r)/2;
if(ll<=mid) Query(2*t,l,mid,ll,rr);
if(rr>=mid+1) Query(2*t+1,mid+1,r,ll,rr);
}
void Add(int t,int l,int r,int ll,int rr,int k) {
if(ll<=l&&r<=rr) {
Node[t]+=(r-l+1)*k;
lazy[t]+=k;
return ;
}
Push(t,r-l+1);
int mid=(l+r)/2;
if(ll<=mid) Add(2*t,l,mid,ll,rr,k);
if(rr>=mid+1) Add(2*t+1,mid+1,r,ll,rr,k);
Node[t]=Node[2*t]+Node[2*t+1];
}
int main() {
n=read();m=read();
for(int i=1;i<=n;i++) a[i]=read();
Build(1,1,n);
while(m--) {
ll t=read(),ll=read(),rr=read();
if(t==1) {
ll ;k;
k=read();
Add(1,1,n,ll,rr,k);
}
else {
sum=0;
Query(1,1,n,ll,rr);
cout<<sum<<'\n';
}
}
return 0;
}
这一句ll ;k;
为什么在k前面加一个;才能过编译啊