#10116. 「一本通 4.1 练习 1」清点人数(题目链接)
树状数组板子题
#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5+500;
int sum[maxn];
int mp[maxn];
int n,m;
int low(int x){
return x&(-x);
}
int qur(int x){
int an = 0;
while(x){
an += sum[x];
x -= low(x);
}
return an;
}
void upda(int x,int da){
while(x<=n){
sum[x] += da;
x += low(x);
}
}
int main(){
scanf("%d%d",&n,&m);
int a,b;
char t[10];
while(m--){
getchar();
scanf("%s%d",t,&a);
if(t[0]=='A') printf("%d\n",qur(a));
if(t[0]=='B'){
scanf("%d",&b);
upda(a,b);
}
if(t[0]=='C'){
scanf("%d",&b);
upda(a,-b);
}
}
return 0;
}