这个题在kuangbin大佬的模板里有。
http://www.cnblogs.com/kuangbin/p/3308118.html
kuangbin大佬博客里有四个学习连接。
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 60010;
struct node
{
int l,r,sum;
}T[MAXN*30];
int root[MAXN],a[MAXN];
int S[MAXN],use[MAXN];
vector<int> vec;
int n,m,cnt,siz;
struct Query
{
char op;
int l,r,k;
}qs[10010];
int getid(int x)
{
return lower_bound(vec.begin(), vec.end(), x) - vec.begin() + 1;
}
void update(int l, int r, int &x, int y, int pos, int val)
{
T[++cnt] = T[y];
T[cnt].sum += val;
x = cnt;
if(l == r) return;
int mid = (l+r)>>