【解題思路】
直接樹狀數組過
【代碼】
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstring>
#include<string>
#include<cctype>
#include<iomanip>
#define LL long long
//#define LOCAL
#define lowbit(i) (i&(-i))
using namespace std;
const int N=50011;
int tree[N];
int T;
char ch[6];
int Case=0;
void Add(int pos,int val){
while (pos<=N){
tree[pos]+=val;
pos+=lowbit(pos);
}
}
int Query(int pos){
int zjl=0;
while (pos>0){
zjl+=tree[pos];
pos-=lowbit(pos);
}
return zjl;
}
int main(){
#ifdef LOCAL
freopen("HDU1166.in","r",stdin);
#endif
scanf("%d",&T);
while (T--){
Case++;
printf("Case %d:\n",Case);
memset(tree,0,sizeof(tree));
int n;
scanf("%d",&n);
for (int i=1;i<=n;++i){
int a;
scanf("%d",&a);
Add(i,a);
}
while (scanf("%s",&ch[0])&&ch[0]!='E'){
if (ch[0]=='A'){
int x,y;
scanf("%d%d",&x,&y);
Add(x,y);
}
else if (ch[0]=='S'){
int x,y;
scanf("%d%d",&x,&y);
Add(x,-y);
}
else if (ch[0]=='Q'){
int x,y;
scanf("%d%d",&x,&y);
printf("%d\n",Query(y)-Query(x-1));
}
}
}
return 0;
}