```cpp
int rnk(int x) {
int res = 0, cur = rt;
while (1) {
if (!cur) return res + 1;
if (x < val[cur]) cur = ls(cur);
else {
res += siz[ls(cur)];
if (val[cur] == x)
return splay(cur), res + 1;
res += cnt[cur];
if (!rs(x)) return res + 1;
cur = rs(cur);
}
}
}
```
上述代码同样 WA on #2。
by _Skyfire_ @ 2023-12-29 17:23:16
@[_Skyfire_](/user/381949) 是rs(cur)不是rs(x)吧
by Rainbow_qwq @ 2023-12-29 17:53:07
x是1e7,你数组越界了什么都有可能发生吧
by Rainbow_qwq @ 2023-12-29 17:53:56
@[Rainbow_qwq](/user/151935) 破案了,即使我rs(cur)也趋势,原因竟然是因为cur可能是空的。我把空节点转上根了
by _Skyfire_ @ 2023-12-29 18:49:00