#include<iostream>
#define N 50005
int num[N];
int t,n,tmp;
char c;
char str_c[20];
int x,y;
int low_bit(int x)
{
return (-x)&x;
}
void update(int p,int d)
{
while(p<=n)
{
num[p]+=x;
p+=low_bit(p);
}
}
int sum(int p)
{
int sum=0;
while(p>0)
{
sum+=num[p];
p-=low_bit(p);
}
return sum;
}
void cmd()
{
while (std::cin>>str_c)
{
switch (str_c[0]){
case 'A':
std::cin>>x>>y;
update(x,y);
break;
case 'S':
std::cin>>x>>y;
update(x,-y);
break;
case 'Q':
std::cin>>x>>y;
std::cout<<sum(y)-sum(x-1)<<std::endl;
break;
case 'E':
return;
default:
break;
}
}
}
int main()
{
std::cin>>t;
for(int i=0;i!=t;i++){
std::cin>>n;
for(int i=0;i!=n;i++){
std::cin>>tmp;
update(i+1,tmp);
}
std::cout<<"Case "<<i+1<<":"<<std::endl;
cmd();
memset(num,sizeof(num),0);
}
}
HDU-1166-敌兵布阵
最新推荐文章于 2019-03-01 21:55:00 发布