int find_rank(int x,int g){
if(g==0) return 0;//什么时候会出现这种情况,要查的数不在集合???
if(x==tr[g].v) return tr[tr[g].l].size;
if(x<tr[g].v) return find_rank(x,tr[g].l);
return find_rank(x,tr[g].r)+tr[tr[g].l].size+tr[g].cnt;
}
rt:if(g==0) return 0;这句判断不写会mle...
如果查询的数都是集合内的, if(g==0) return 0;这句判断是否有必要呢?如果查询的数不是集合内的,返回是没查到(比如-1)还是什么呢????