4370: Schoolbag的求助

时间限制:1000 ms 内存限制:128 MB
上传者:
提交:6 通过:4

题目描述

Schoolbag 想请你帮忙实现一种数据结构来维护一些数,该数据结构需要实现以下操作:

1 $x$ 插入一个数 $x$

2 $x$ 删除一个数 $x$

3 $x$ 查询 $x$ 是否存在于序列之中,是则返回 $1$,否则返回 $0$

4 $x$ 查询 $x$ 的前驱

5 $x$ 查询 $x$ 的后继

6 查询序列中元素个数



一些定义:

一个数的前驱:数据值小于 $x$,且与 $x$ 数值最接近的数

一个数的后继:数据值大于 $x$,且与 $x$ 数值最接近的数

输入格式

第一行一个数 $n$,表示有 $n$ 个操作。

接下来 $n$ 行,每行第一个数 $opt$,表示操作类型
  • 若 $opt$ 为 1,则需要读入第二个数 $x$,表示要插入的数
  • 若 $opt$ 为 2,则需要读入第二个数 $x$,表示要删除的数
  • 若 $opt$ 为 3,则需要读入第二个数 $x$,表示要查询的数
  • 若 $opt$ 为 4,则需要读入第二个数 $x$,表示要查询的数
  • 若 $opt$ 为 5,则需要读入第二个数 $x$,表示要查询的数

输出格式

  • 若 $opt$ 为 3,则需要输出一行一个整数 $x$,表示查询的数是否存在于序列中
  • 若 $opt$ 为 4,则需要输出一行一个整数 $x$,表示要查询的数的前驱,没有则需要输出 -1
  • 若 $opt$ 为 5,则需要输出一行一个整数 $x$,表示要查询的数的后继,没有则需要输出 -1
  • 若 $opt$ 为 6,则需要输出一行一个整数 $x$,表示序列中元素个数

输入样例 复制

8
1 1
1 2
1 3
3 2
3 4
4 2
5 2
6
2 2

输出样例 复制

1
0
1
3
3

数据范围与提示