#include
using namespace std;
#define ls(k) (k)<<1
#define rs(k) (k)<<1|1
#define int long long
#define maxn 100005
int n,m,a[maxn],x,y,z,b,sum[maxn4],add[maxn*4];
inline void build(int k,int l,int r)
{
if(l==r)
{
sum[k]=a[l];
return;
}
int mid=(l+r)>>1;
build(ls(k),l,mid);
build(rs(k),mid+1,r);
sum[k]=sum[ls(k)]+sum[rs(k)];
}
inline void ad(int k,int l,int r,int v)
{
add[k]+=v;
sum[k]+=v(r-l+1);
}
inline void pushdown(int k,int l,int r,int mid)
{
if(!add[k])
{
return;
}
ad(ls(k),l,mid,add[k]);
ad(rs(k),mid+1,r,add[k]);
add[k]=0;
}
inline void ADD(int k,int l,int r,int x,int y,int v)
{
if(l>=x&&r<=y)
{
ad(k,l,r,v);
return;
}
int mid=(l+r)>>1;
pushdown(k,l,r,mid);
if(x<=mid)
{
ADD(ls(k),l,mid,x,y,v);
}
if(mid
{
ADD(rs(k),mid+1,r,x,y,v);
}
sum[k]=sum[ls(k)]+sum[rs(k)];
}
inline int check(int k,int l,int r,int x,int y)
{
if(l>=x&&r<=y)
{
return sum[k];
}
int mid=(l+r)>>1,ans=0;
pushdown(k,l,r,mid);
if(x<=mid)
{
ans=check(ls(k),l,mid,x,y);
}
if(mid
{
ans+=check(rs(k),mid+1,r,x,y);
}
return ans;
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
build(1,1,n);
while(m--)
{
cin>>b>>x>>y;
if(b==1)
{
cin>>z;
ADD(1,1,n,x,y,z);
}
else
{
cout<
}
}
return 0;
}
多个人