#include<bits/stdc++.h>
int i,j,k,m,n,c[500000<<2],a,b;
int lowbit(int x){
return x & -x;
}
void add(int x,int y){
while (x<=n){
c[x]+=y;
x+=lowbit(x);
}
}
int calc(int x){
int ans=0;
while (x){
ans+=c[x];
x-=lowbit(x);
}
return ans;
}
int main(){
scanf("%d%d",&n,&m);
for (i=1;i<=n;i++){
scanf("%d",&k);
add(i,k);
}
for (i=1;i<=m;i++){
scanf("%d%d%d",&k,&a,&b);
if (k==1) add(a,b);
else if (k==2) printf("%d\n",calc(b)-calc(a-1));
}
return 0;
}
树状数组,洛谷P3374 【模板】树状数组 1
最新推荐文章于 2022-09-28 16:39:26 发布