树状数组模板题
因为数组开到了500000的空间,所以用了scanf,虽然cin也能过,但是时间上差了好几倍
#include<iostream>
using namespace std;
int n,k;
int a[500005];
int lowbit(int x)
{
return x&(-x);
}
void add(int x,int t)
{
while(x <= n)
{
a[x] += t;
x += lowbit(x);
}
}
int search(int x)
{
int ans = 0;
while(x>0)
{
ans += a[x];
x -= lowbit(x);
}
return ans;
}
int main(void)
{
scanf("%d%d",&n,&k);
char s;
while(k--)
{
scanf(" %c",&s); //记得要加空格,不然scanf会把前面那个回车当作字符,就出大问题了
int a,b;
if(s == 'A')
{
scanf("%d",&a);
printf("%d\n",search(a));
}
else if(s == 'B')
{
scanf("%d%d",&a,&b);
add(a,b);
}
else
{
scanf("%d%d",&a,&b);
add(a,-b); //剪掉,所以b加负号
}
}
return 0;
}