1 #include <stdio.h>
2 int n,c[1000005];
3 int lowbit(int x)
4 {
5 return(x&-x);
6 }
7 void add(int x,int d)
8 {
9 while (x<=n)
10 {
11 c[x]+=d;
12 x+=lowbit(x);
13 }
14 }
15 int sum(int x)
16 {
17 int res=0;
18 while (x>0)
19 {
20 res+=c[x];
21 x-=lowbit(x);
22 }
23 return(res);
24 }
25 int main()
26 {
27 int t,j,i,a,x,y;
28 char c1,ch[10];
29 while (~scanf("%d",&t))
30 for (j=1;j<=t;j++)
31 {
32 scanf("%d",&n);
33 for (i=1;i<=n;i++) c[i]=0;
34 for (i=1;i<=n;i++)
35 {
36 scanf("%d",&a);
37 add(i,a);
38 }
39 getchar();
40 printf("Case %d:\n",j);
41 while (~scanf("%s",ch)&&ch[0]!='E')
42 {
43 scanf("%d%d%c",&x,&y,&c1);
44 if (ch[0]=='A') add(x,y);
45 if (ch[0]=='S') add(x,-y);
46 if (ch[0]=='Q') printf("%d\n",sum(y)-sum(x-1));
47 }
48 }
49 return(0);
50 }
http://acm.hdu.edu.cn/showproblem.php?pid=1166