原题链接:传送门
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int N = 1e6+10;
int tree[N];
int n,t;
void Add(int k,int num) {
while(k <= n) {
tree[k] += num;
k += k&(-k);
}
}
int Query(int k) {
int ret = 0;
while(k) {
ret += tree[k];
k -= k&(-k);
}
return ret;
}
int main() {
scanf("%d%d",&n,&t);
// fill(tree,tree+N,0);
memset(tree,0,sizeof(tree));
while(t--) {
char op[6];
int l,r,val;
getchar();
scanf("%s",&op);
if(op[0] == 'A') {
scanf("%d%d%d",&l,&r,&val);
Add(l,val); //l往后全加了val
Add(r+1,-val); //将r+1往后再全减去val。就实现了区间更新[l,r]
} else {
scanf("%d",&l);
printf("%d\n",Query(l));
}
}
return 0;
}