#1093. 大图书馆的牧羊人

大图书馆的牧羊人

Background

小太刀凪需要去整理图书馆里的书,不过图书馆里的书目居然达到了 10510^5 的数量级,这对她来说管理太复杂了,因此,她想要请你帮她用跳跃表来维护图书馆中书籍的存入、借出和查询。

Description

实现一个跳表,初始为空。需要处理以下 33 种操作:

  1. 1 x:插入整数 xx。如果 xx 已存在,则忽略本次插入(即不允许重复元素)。

  2. 2 x:删除整数 xx。如果 xx 不存在,则忽略本次删除。

  3. 3 x:查询整数 xx 是否存在。若存在输出 Exist,否则输出 Not Exist。

Input Format

第一行一个整数 nn,表示操作总数。 接下来 nn 行,每行一个操作,格式为上述 op x。

Output Format

对于每个操作 33 输出一行结果。

Samples

3
1 2
3 2
2 2
Exist

Limitations

  • 1≤n≤1051 \leq n \leq 10^5
  • 所有插入、删除、查询的 x 以及排名查询的 k 均满足:∣x∣,k≤109|x|, k \leq 10^9
  • 时间限制:2 秒
  • 内存限制:256 MB

要求:期望时间复杂度 O(log n) 完成每个操作,空间复杂度 O(n)。
随机化策略:建议使用随机数决定新节点的层高(例如 rand() % MAX_LEVEL 或几何分布),保证跳表性能。