A7418 | 零件仓库
时间限制1s
内存限制128MB
通过 / 提交0/0
题目描述
## 题目背景
小码君负责管理学校机器人社团的零件仓库。
仓库里存放着不同规格的轴承,每个轴承都有一个编号,编号越大表示规格越大。为了方便管理,仓库中不会同时存在两个编号完全相同的轴承。
每天都会有入库和出库操作。现在请你帮小码君维护这个仓库。
## 题目描述
一共有 $m$ 次操作,每次操作有两种类型:
*
* 如果仓库中已经有编号为 $x$ 的轴承,则输出
* 否则,将这个轴承放入仓库。
*
* 如果仓库中有编号正好为 $x$ 的轴承,就取出它。
* 如果没有编号正好为 $x$ 的轴承,就取出编号与 $x$ 差值最小的轴承。
* 如果有两个轴承都同样接近 $x$,取出编号较小的那个。
* 每次出库后,被取出的轴承会从仓库中删除。
* 如果仓库为空,则输出
小码君负责管理学校机器人社团的零件仓库。
仓库里存放着不同规格的轴承,每个轴承都有一个编号,编号越大表示规格越大。为了方便管理,仓库中不会同时存在两个编号完全相同的轴承。
每天都会有入库和出库操作。现在请你帮小码君维护这个仓库。
## 题目描述
一共有 $m$ 次操作,每次操作有两种类型:
*
1 x:表示将一个编号为 $x$ 的轴承放入仓库。* 如果仓库中已经有编号为 $x$ 的轴承,则输出
Already Exist。* 否则,将这个轴承放入仓库。
*
2 x:表示需要取出一个编号尽量接近 $x$ 的轴承。* 如果仓库中有编号正好为 $x$ 的轴承,就取出它。
* 如果没有编号正好为 $x$ 的轴承,就取出编号与 $x$ 差值最小的轴承。
* 如果有两个轴承都同样接近 $x$,取出编号较小的那个。
* 每次出库后,被取出的轴承会从仓库中删除。
* 如果仓库为空,则输出
Empty。输入格式
第一行一个整数 $m$,表示操作次数。
接下来 $m$ 行,每行两个整数,表示一次操作:
```text
op x
```
其中:
* $op = 1$ 表示入库;
* $op = 2$ 表示出库。
接下来 $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$ 的轴承。
第一次
此时仓库中剩下 $10,50$。
第二次
第三次
第四次
## 数据范围
对于 $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}$。
前三次操作后,仓库中有编号为 $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}$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?