树状数组套版题
//#include <bits/stdc++.h>
//#define _ ios_base::sync_with_stdio(0);cin.tie(0);
#include <iostream>
#include <sstream>
#include <iomanip>
#include <vector>
#include <deque>
#include <list>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <bitset>
#include <string>
#include <numeric>
#include <algorithm>
#include <functional>
#include <iterator>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <cstdlib>
#include <cctype>
#include <complex>
#include <ctime>
#define INF 0x3f3f3f3f
#define eps 1e-6
typedef long long LL;
const double pi = acos(-1.0);
const long long mod = 1e9 + 7;
using namespace std;
int tree[100005];
int n;
void update(int x,int val)
{
while(x <= n)
{
tree[x] += val;
x += x & (-x);
}
}
LL query(int x)
{
LL sum = 0;
while(x)
{
sum += tree[x];
x -= x & (-x);
}
return sum;
}
int main()
{
//freopen("int.txt","r",stdin);
//freopen("out.txt","w",stdout);
int T;
scanf("%d",&T);
int l,r;
for(int i = 1;i <= T;i++)
{
printf("Case %d:\n",i);
memset(tree,0,sizeof(tree));
scanf("%d",&n);
int k;
for(int i = 1;i <= n;i++)
{
scanf("%d",&k);
update(i,k);
}
string s;
while(cin >> s)
{
if(s == "End")
break;
scanf("%d %d",&l,&r);
if(s == "Query")
printf("%lld\n",query(r) - query(l - 1));
else if(s == "Add")
update(l,r);
else if(s == "Sub")
update(l,-r);
}
}
return 0;
}