#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 50005;
int c[maxn];
int n;
int lowbit(int t)
{
return t&(-t);
}
void add(int i,int t)
{
while(i<=n)
{
c[i]+=t;
i=i+lowbit(i);
}
}
int sum(int i)
{
int total=0;
while(i>0)
{
total+=c[i];
i=i-lowbit(i);
}
return total;
}
int main()
{
int T;
scanf("%d",&T);
int case1=1;
while(T--)
{
memset(c,0,sizeof(c));
scanf("%d",&n);
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
add(i,x);
}
char s[10];
printf("Case %d:\n",case1++);
while(scanf("%s",s)!=EOF)
{
int x,y;
if(s[0]=='E') break;
scanf("%d %d",&x,&y);
if(s[0]=='A') add(x,y);
else if(s[0]=='S') add(x,-y);
else printf("%d\n",sum(y)-sum(x-1));
}
}
return 0;
}
HDU 1166 树状数组模板题
最新推荐文章于 2019-08-08 10:25:56 发布