敌兵布阵
#include<stdio.h>
#define MAX 50001
int sum[MAX*4];
int s;
void js(int k,int j,int d)
{
if(k==j)
{
scanf("%d",&sum[d]);
return ;
}
int m;
m=(k+j)/2;
js(k,m,d*2);
js(m+1,j,d*2+1);
sum[d]=sum[d*2]+sum[d*2+1];
}
void Add(int z,int w,int k,int j,int d)
{
if(w==k&&w==j)
{
sum[d]+=z;
return;
}
int m;
m=(k+j)/2;
if(w<=m) Add(z,w,k,m,d*2);
else
Add(z,w,m+1,j,d*2+1);
sum[d]=sum[d*2]+sum[d*2+1];
}
void Que(int z,int y,int k,int j,int d)
{
if(z<=k&&j<=y)
{
s+=sum[d];
return;
}
int m;
m=(k+j)/2;
if(z<=m) Que(z,y,k,m,d*2);
if(y>m) Que(z,y,m+1,j,d*2+1);
}
int main()
{
int t,cnt=1;
int n;
char ss[10];
int a,b;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
js(1,n,1);
printf("Case %d:\n",cnt++);
while(scanf("%s",ss)!=EOF)
{
if(ss[0]=='E') break;
scanf("%d %d",&a,&b);
if(ss[0]=='Q')
{
s=0;
Que(a,b,1,n,1);
printf("%d\n",s);
continue;
}
if(ss[0]=='S') b=-b;
Add(b,a,1,n,1);
}
}
return 0;
}