可能原因1:
int getrank(int u, int key) {
if (u == 0) return 1;
if (tr[u].key == key) return tr[tr[u].l].size + 1;
else if (tr[u].key > key) return getrank(tr[u].l, key);
else return tr[tr[u].l].size + tr[u].cnt + getrank(tr[u].r, key);
}
可能原因2:
const int N = 2e6 + 10, INF = 2147483647;
检查你的数组有没有开到2e6?如果使用无穷大,是否大于230?只开1e9是不够的。
针对Treap选手,其他选手也可借鉴,被数据卡了好久。