RT。
如果有一组数据是
7
1 1
1 1
1 4
1 4
1 5
1 9
3 8
那么对于唯一的查询3 8
的答案显然是 6。
但是题解中有不少Treap
输出 5。
所以以下写法应该是错的(?)
int qrank(int x,int val){
if(!x) return 0;
if(t[x].val==val) return t[lc(x)].siz+1;
else if(t[x].val<val) return t[lc(x)].siz+t[x].num+qrank(rc(x),val);
else return qrank(lc(x),val);
}
cout<<qrank(root,val)<<endl;
然而这个写法过了本题......