自码代码,有向大佬学习的成分
#include<bits/stdc++.h>
using namespace std;
int lowbit(int x){
return x&(-x);
}
long long tr[9999999];//树
int a[9999999];//原数组
int n,m,l1,r1,in_ans;
void g_a(int x,int k){//点 x加上k
for(int i = x;i<=n;i+=lowbit(i)){
tr[i]+=k;
}
}
long long w_s(int l,int r){
long long ans = 0;
for(int i=r;i>=1;i-=lowbit(i)){
ans+=tr[i];
}
for(int i=l-1;i>=1;i-=lowbit(i)){
ans-=tr[i];
}
return ans;
}
int main(){
cin>>n>>m;
for(int i = 1;i<=n;i++){
cin>>in_ans;
g_a(i,in_ans);
}
for(int i = 1;i<=m;i++){
int noww;
cin>>noww>>l1>>r1;
if(noww == 1){
g_a(l1,r1);
}else{
cout<<w_s(l1,r1)<<endl;
}
}
return 0;
}