T1 AC
其余全WA
#include<bits/stdc++.h>
#define left idx<<1
#define right idx<<1|1
#define int long long
using namespace std;
const int N=5e5+5;
long long a[N];
long long value[N*4],lazy[N*4];
void push_down(int idx,int l,int r){
if(lazy[idx]){
lazy[left]+=lazy[idx];
lazy[right]+=lazy[idx];
int mid=l+r>>1;
value[left]+=(mid-l+1)*lazy[idx];
value[right]+=(r-mid+1)*lazy[idx];
lazy[idx]=0;
}
}
void build(int idx,int l,int r){
if(l==r){
value[idx]=a[l];
return;
}
int mid=l+r>>1;
build(left,l,mid);
build(right,mid+1,r);
value[idx]=value[left]+value[right];
}
void modify(int idx,int l,int r,int ql,int qr,int val){
if(ql<=l&&r<=qr){
lazy[idx]+=val;
value[idx]+=(r-l+1)*val;
return;
}
push_down(idx,l,r);
int mid=l+r>>1;
if(ql<=mid)modify(left,l,mid,ql,qr,val);
if(qr>mid)modify(right,mid+1,r,ql,qr,val);
value[idx]=value[left]+value[right];
}
long long query(int idx,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr)
return value[idx];
push_down(idx,l,r);
long long ans=0;
int mid=l+r>>1;
if(ql<=mid)ans+=query(left,l,mid,ql,qr);
if(qr>mid)ans+=query(right,mid+1,r,ql,qr);
return ans;
}
signed main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
build(1,1,n);
// for(int i=1;i<=n*4;i++)cout<<value[i]<<" ";cout<<endl;
while(m--){
int op,l,r,val;
cin>>op;
if(op==1){
int x,y,val;cin>>x>>y>>val;
modify(1,1,n,x,y,val);
// for(int i=1;i<=n*4;i++)cout<<value[i]<<" ";cout<<endl;
}
else{
int x;cin>>x;
cout<<query(1,1,n,x,x)<<endl;
}
}
return 0;
}