裸树状数组……不能再裸了……
更改值得时候 别忘了该原数组就可以了
#include <iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<set>
#include<cmath>
#include<climits>
#include<cctype>
#include<cstdlib>
#include<vector>
using namespace std;
typedef long long ll;
const int maxn=200010;
inline int lowbit(int x)
{
return x&(-x);
}
ll fen[maxn],a[maxn];
int n;
void add(int x,ll v)
{
while(x<=n) {
fen[x]+=v;
x+=lowbit(x);
}
}
ll sum(int x)
{
ll ans=0;
while(x>0) {
ans+=fen[x];
x-=lowbit(x);
}
return ans;
}
int main()
{
int x,y,Kase=1;;
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
while(~scanf("%d",&n)&&n) {
if(Kase!=1) {
puts("");
}
printf("Case %d:\n",Kase++);
memset(fen,0,sizeof fen);
for(int i = 1; i <= n; ++i) {
scanf("%d",&a[i]);
add(i,a[i]);
}
char ch[10];
while(scanf("%s",ch)) {
if(!strcmp(ch,"END")) break;
scanf("%d%d",&x,&y);
if(ch[0]=='S') {
add(x,y-a[x]);
a[x]=y;///!!
}
else {
printf("%lld\n",sum(y)-sum(x-1));
}
}
}
return 0;
}