int lowbit(int x) {
return x & -x;
}
//单点修改
int tree[MAXN];
void update(int index, int val)
{
for (int i = index; i < MAXN; i += lowbit(i))
tree[i] += x;
}
//求前n项和
inline int query(int index)
{
int ans = 0;
for (int i = index; i > 0; i -= lowbit(i))
ans += tree[i];
return ans;
}
//区间查询
inline int query(int a, int b)
{
return query(b) - query(a - 1);
}