代码如下:
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[500005],c[500005],i,j,judge;
int lowbit(int x){
return x&-x;
}
void add(int x,int delta){
for(int i = x;i<=n;i+=lowbit(i)){
c[i] += delta;
}
}
int getsum(int x){
int ans = 0;
for(int i = x;i;i-=lowbit(i)){
ans+=c[i];
}
return ans;
}
int main(){
cin>>n>>m;
int x,y,k;
for(int i = 1;i<=n;i++){
cin>>a[i];
add(i,a[i]);
}
for(int i = 1;i<=m;i++){
cin>>judge;
if(judge==1){
cin>>x>>y>>k;
for(int i = x;i<=y;i++){
add(i,k);
}
}
else{
cin>>x>>y;
cout<<getsum(y)-getsum(x-1)<<endl;
}
}
return 0;
}