敌兵布阵

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int N,c[51100];
int lowbit(int x)
{
 return x&-x;
}
void add(int x,int i)
{
 while(i<=N)
 {
   c[i]+=x;
   i+=lowbit(i);
}
}
int sum(int i)
{
  int sum=0;
  while(i)
  {
     sum+=c[i];
     i-=lowbit(i);
  }
  return sum;
}

int main() 
{
 int T,i,j,t,l=0;
 scanf("%d",&T);
 
 while(T--)
 {
  l++;
  int flag=1;
  memset(c,0,sizeof(c));
  scanf("%d",&N);
  for(i=1;i<=N;i++)
   {
    scanf("%d",&t);
    add(t,i);
   }
   char ch[10];int m,n;
  while(scanf("%s",ch),ch[0]!='E')//刚开始的时侯的,我把这个与m,n
                                      一起输入了,悲剧啊。。
                                     输入end后硬是结束不了。。
  { 
    
    scanf("%d%d",&m,&n);
    
    if(ch[0]=='A')
    add(n,m);
    else if(ch[0]=='S')
    add(-n,m);
    else if(ch[0]=='Q')
    {
     if(flag)
     printf("Case %d:\n",l),flag=0;
     printf("%d\n",sum(n)-sum(m-1)); 
    }
    else if(ch[0]=='E')
       break;
  }
  
}
return 0;
}
    

posted on 2011-05-02 15:03  more think, more gains  阅读(230)  评论(0编辑  收藏  举报

导航