#include <cstdio>
#include <fstream>
#include <cstring>
using namespace std;
#define N 200000+5
int a[N], js[N], c[N], lowbit[N];
int n;
void init()
{
for (int i=1;i<=N-5;i++)
lowbit[i]= i&(-i);
}
void add(int x,int v)
{
while (x<=n) {
c[x]+=v; x+=lowbit[x];
}
}
int sum(int x)
{
int k=0;
while (x) {
k+=c[x];
x-=lowbit[x];
}
return k;
}
int main()
{
freopen("1.in","r",stdin);
int kase=0;
init();
while(scanf("%d",&n)!=EOF && n){
if (kase) printf("\n");
printf("Case %d:\n",++kase);
js[0]=0;
for (int i=1;i<=n;i++) {
scanf("%d",&a[i]);
js[i]=js[i-1]+a[i];
c[i]=js[i]-js[i-lowbit[i]];
}
char s[5];
int x, v, y;
while (scanf("%s",s)!=EOF && s[0]!='E') {
if (s[0]=='S') {
scanf("%d%d",&x,&v);
add(x,v-a[x]);
a[x]=v;
}
else {
scanf("%d%d",&x,&y);
printf("%d\n",sum(y)-sum(x-1));
}
}
}
return 0;
}
(考前水题)LA2191 裸树状数组
最新推荐文章于 2023-10-20 00:03:38 发布