# include<cstdio>
# include<algorithm>
# define maxn 50005*4
using namespace std;
int sum[maxn];//不用记录每个节点的左右
void build(int o,int l,int r)
{
if(l==r) scanf("%d",&sum[o]);
else {
int m=(l+r)/2;
build(o*2,l,m);
build(o*2+1,m+1,r);
sum[o]=sum[o*2]+sum[o*2+1];}
return ;
}
int query(int ql,int qr,int o,int l,int r)
{
int m=(l+r)/2,ans=0;
if(ql<=l&&qr>=r) return sum[o];
if(ql<=m) ans+=query(ql,qr,o*2,l,m);
if(qr>m) ans+=query(ql,qr,o*2+1,m+1,r);
return ans;
}
void update(int p,int v,int o,int l,int r)
{
int m=(l+r)/2;
if(l==r) {sum[o]+=v;return;}
if(p<=m) update(p,v,o*2,l,m);
else update(p,v,o*2+1,m+1,r);
sum[o]=sum[o*2]+sum[o*2+1];
return ;
}
int main()
{
int N;
scanf("%d",&N);
for(int kase=0;kase<N;kase++)
{
int n,num=0;
char com[10];
scanf("%d",&n);
build(1,1,n);
printf("Case %d:\n",kase+1);//冒号在%d 后面。。。。。。。。。。。。
while(1)
{
int i,j;
scanf("%s",com);
if(com[0]=='E') break;
scanf("%d%d",&i,&j);
if(com[0]=='A'){update(i,j,1,1,n);}
else if(com[0]=='S') {update(i,-j,1,1,n);}
else printf("%d\n",query(i,j,1,1,n));
}
}
return 0;
}
1166
最新推荐文章于 2022-08-15 11:51:54 发布