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);}}