#include<cstdio>
using namespace std;
int n,m,f[500005],a[500005];
inline void add(int x,int y){
for(;x<=n;x+=x&-x)f[x]+=y;
return ;
}
inline int ask(int x){
int re=0;
for(;x;x-=x&-x)re+=f[x];
return re;
}
int main(){
scanf("%d%d",&n,&m);
int x,y,opt,k;
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
while(m--){
scanf("%d%d",&opt,&x);
if(opt==1){
scanf("%d%d",&y,&k);
add(x,k);add(y+1,-k);
}
else printf("%d\n",ask(x)+a[x]);
}
}
【洛谷P3368】【模板】【树状数组】树状数组2
最新推荐文章于 2018-10-14 15:01:36 发布