t 了 3 个点
#include <bits/stdc++.h>
using namespace std;
#define maxn 500005
int a[maxn],sum[maxn],pos[maxn],n,m,bl,bll;
int L[maxn],R[maxn];
void up(int u,int x){
for(int i=L[u];i<=R[u];i++){
a[i]+=x;
}
}
void add(int l,int r,int x){
int ql=pos[l],qr=pos[r];
if(ql==qr){
for(int i=l;i<=r;i++){
a[i]+=x;
}
return ;
}
for(int i=l;i<=R[ql];i++){
a[i]+=x;
}
for(int i=L[qr];i<=r;i++){
a[i]+=x;
}
for(int i=ql+1;i<qr;i++){
sum[i]+=x*bll;
up(i,x);
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
bl=sqrt(n);
bll=bl;
for(int i=1;i<=bl;i++){
L[i]=R[i-1]+1;
R[i]=i*bl;
}
if(R[bl]<n){
bl++;
R[bl]=n;
L[bl]=R[bl-1]+1;
}
for(int i=1;i<=n;i++){
pos[i]=(i-1)/bl+1;
}
while(m--){
int op,l,r,x;
cin>>op;
if(op==1){
cin>>l>>r>>x;
add(l,r,x);
}
else if(op==2){
cin>>l;
cout<<a[l]<<'\n';
}
}
return 0;
}