树状数组的基本操作
lowbit
getsum
my_change
#include<algorithm>
#include<iostream>
#include<string.h>
using namespace std;
template <typename T> void read(T &x){
x=0;int f=1;char ch=getchar();
for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-1;
for(;isdigit(ch);ch=getchar())x=(x<<1)+(x<<3)+ch-'0';
x*=f;
}
int a[200001];
int c[200001];
int n,m;
int lowbit(int x){
return x&-x;
}
int getsum(int x){
int ans=0;
while(x>=1){
ans+=c[x];
x-=lowbit(x);
}
return ans;
}
void my_change(int x,int k){
while(x<=n){
c[x]+=k;
x+=lowbit(x);
}
}
int main(){
read(n),read(m);
char ch;
int x,y;
memset(a,0,sizeof(a));
memset(c,0,sizeof(c));
for(int i=1;i<=m;++i){
cin>>ch;
read(x),read(y);
if(ch=='C') my_change(x,y);
else cout<<getsum(y)-getsum(x-1)<<endl;
}
return 0;
}