// 如果想偷懒,这里要小心! // 由于 rnk 记录的是:小于的个数 +1 // 所以 pre 就是小于的个数 // 但是 suc 不一样,因为会有重复 // 所以应该是 val + 1 的个数 // 至于 pre 不能是 queryRnk(k - 1) // 因为可能小于 k 的和小于 k - 1 的一样多(都没出现) // 然后 +1 就炸缸了,反而要大 inline int queryPre(int k) { return queryKth(queryRnk(k) - 1); } inline int querySuc(int k) { return queryKth(queryRnk(k + 1)); }