测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A7418. 零件仓库

编程题 普及/提高-
知识点

题目描述

## 题目背景

小码君负责管理学校机器人社团的零件仓库。

仓库里存放着不同规格的轴承,每个轴承都有一个编号,编号越大表示规格越大。为了方便管理,仓库中不会同时存在两个编号完全相同的轴承。

每天都会有入库和出库操作。现在请你帮小码君维护这个仓库。

## 题目描述

一共有 $m$ 次操作,每次操作有两种类型:

* 1 x:表示将一个编号为 $x$ 的轴承放入仓库。

* 如果仓库中已经有编号为 $x$ 的轴承,则输出 Already Exist
* 否则,将这个轴承放入仓库。

* 2 x:表示需要取出一个编号尽量接近 $x$ 的轴承。

* 如果仓库中有编号正好为 $x$ 的轴承,就取出它。
* 如果没有编号正好为 $x$ 的轴承,就取出编号与 $x$ 差值最小的轴承。
* 如果有两个轴承都同样接近 $x$,取出编号较小的那个。
* 每次出库后,被取出的轴承会从仓库中删除。
* 如果仓库为空,则输出 Empty

输入格式

第一行一个整数 $m$,表示操作次数。

接下来 $m$ 行,每行两个整数,表示一次操作:

```text
op x
```

其中:

* $op = 1$ 表示入库;
* $op = 2$ 表示出库。

输出格式

对于每次需要输出的操作,输出一行。

* 重复入库时,输出 Already Exist
* 出库成功时,输出被取出的轴承编号;
* 仓库为空时,输出 Empty

输入输出样例

输入 #1
7
1 10
1 50
1 30
2 30
2 30
2 30
2 30
输出 #1
30
10
50
Empty

说明/提示

## 样例解释

前三次操作后,仓库中有编号为 $10,30,50$ 的轴承。

第一次 2 30,正好有编号为 $30$ 的轴承,所以取出 $30$。

此时仓库中剩下 $10,50$。

第二次 2 30,$10$ 和 $50$ 距离 $30$ 都是 $20$,所以取编号较小的 $10$。

第三次 2 30,仓库中只剩 $50$,所以取出 $50$。

第四次 2 30,仓库为空,所以输出 Empty

## 数据范围

对于 $40\%$ 的数据,$m \le 1000$。

对于 $70\%$ 的数据,$m \le 10^4$。

对于 $100\%$ 的数据,满足:

* $1 \le m \le 10^5$;
* $1 \le x \le 10^9$;
* $op \in {1,2}$。
上一题 去做题 下一题