模板

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;
}

解析