原题在这里
#include<bits/stdc++.h>
using namespace std;
const int maxn = 50005;
long long n,a[maxn],c[maxn];//长度,原数组,前缀和
void add(int i,int z)
{
for(;i <= n;i += ((-i)&i))
c[i] += z;
}
long long sum(int i)
{
long long s = 0;
for(;i > 0;i -= ((-i)&i))
s += c[i];
return s;
}
long long sum(int i,int j)
{
return sum(j) - sum(i - 1);
}
int main()
{
long long T;
cin >> T;
for(long long y = 1;y <= T;y++)
{
cout << "Case " << y << ":" << endl;
string cz;
memset(a,0,sizeof(a));
memset(c,0,sizeof(c));
int q,z;
cin >> n;
for(int k = 1;k <= n;k++)
{
cin >> a[k];
add(k,a[k]);
}
while(cin >> cz >> q >> z)
{
if(cz == "End")
break;
if(cz == "Add")
add(q,z);
if(cz == "Sub")
add(q,0 - z);
if(cz == "Query")
cout << sum(q,z) << endl;
}
}
return 0;
}