模板
Code
#include<bits/stdc++.h>
#define lowbit(x) x&(-x)
#define int long long
using namespace std;
const int N=5e6+10;
int n,m;
int a[N];
int t[N],cnt;
void add(int x,int d){
for(int i = x;i<=n;i+=lowbit(i)){
t[i]+=d;
}
}
int query(int x){
int ans = 0;
while(x > 0){
ans += t[x];
x -= lowbit(x);
}
return ans;
}
main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
add(i,a[i]);
}
for(int i=1;i<=m;i++){
int op,x,y;
cin>>op>>x>>y;
if(op == 1){
add(x,y);
}else{
cout<<query(y)-query(x-1)<<endl;
}
}
return 0;
}
解析