HDU-1166-敌兵布阵
来源:互联网 发布:apache认证 编辑:程序博客网 时间:2024/06/05 00:39
#include<iostream>#define N 50005int 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);}}