自码代码,有向大佬学习的成分
#include<bits/stdc++.h>
using namespace std;
int lowbit(int x){
return x&(-x);
}
long long tr[1000009],c[1000009],d[1000009];
long long n,m,in_ans;
void g_s(int x,int k){
for(int i=x;i<=n;i+=lowbit(i)){
tr[i]+=k;
}
return;
}
long long ask(int x){
long long ans=0;
for(int i=x;i>=1;i-=lowbit(i)){
ans+=tr[i];
}
return ans;
}
int main(){
cin>>n>>m;
for(int i = 1;i<=n;i++){
cin>>c[i];
d[i] = c[i]-c[i-1];
g_s(i,d[i]);
}
for(int i = 1;i<=m;i++){
int noww;
cin>>noww;
if(noww == 1){
int l1,r1,v1;
cin>>l1>>r1>>v1;
g_s(l1,v1);
g_s(r1+1,-v1);
}else{
int l1;
cin>>l1;
cout<<ask(l1)<<endl;
}
}
return 0;
}