敌兵布阵
#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 阅读(237) 评论(0) 收藏 举报
浙公网安备 33010602011771号