我用差分数组做的
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[10000100],s[10000100],b,x,y,k;
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
s[i]=a[i]-a[i-1];
}
for(int i=1;i<=m;i++){
cin>>b;
if(b==1) {
cin>>x>>y>>k;
s[x]+=k;
s[y+1]-=k;
}
else {
long long sum=0,lx=0;
cin>>x>>y;
for(int i=1;i<=x;i++){
sum+=s[i];
lx+=s[i];
}
for(int i=x+1;i<=y;i++){
sum+=lx+s[i];
lx+=s[i];
}
cout<<sum<<endl;
}
}
return 0;
}