原来 AC 了,对比出来也没有错误。
#include<bits/stdc++.h>
using namespace std;
const int N=500005;
int t[N],n,m;
int lowbit(int x){
return x&-x;
}
void add(int x,int k){
for(int i=x;i<=n;i+=lowbit(i)){
t[i]+=k;
}
}
int query(int x){
int ans=0;
for(int i=x;i>0;i-=lowbit(i)){
ans+=t[i];
}
return ans;
}
int main(){
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
add(i,x);
}
for(int i=1;i<=m;i++){
int opt;
scanf("%d",&opt);
if(opt==1){
int x,k;
scanf("%d%d",&x,&k);
add(x,k);
}
else{
int x,y;
scanf("%d%d",&x,&y);
cout<<query(y)-query(x-1)<<endl;
}
}
return 0;
}