首页 > 试题广场 >

动态整数集最近值提取

[编程题]动态整数集最近值提取
  • 热度指数:518 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个初始为空的整数集合,每次执行以下两种操作之一:
\hspace{23pt}\bullet\, 插入操作 `1 x`:若 x 不在集合中,则插入 x;否则输出 `Already Exist` 并忽略操作。
\hspace{23pt}\bullet\, 提取操作 `2 x`:若集合不为空,删除并输出集合中与 x 绝对差最小的元素;若存在多个候选,则删除并输出其中较小者;若集合为空,则输出 `Empty`。

输入描述:
\hspace{15pt}第一行包含整数 Q\ (1\leqq Q\leqq 10^5),表示操作次数。
\hspace{15pt}接下来 Q 行,每行包含操作类型 op 和参数 x,格式为 op x,其中 op\in\{1,2\}0\leqq x\leqq 10^9


输出描述:
\hspace{15pt}对于每次输出类操作(插入重复元素或提取操作),在单独一行输出结果。如插入重复元素则输出 `Already Exist`;提取操作输出删除的元素值或 `Empty`。
示例1

输入

5
1 10
1 20
1 15
2 17
2 17

输出

15
20

说明

\hspace{15pt}第一次提取删除集合中与 17 距离最小的 15;第二次提取删除剩余元素中与 17 距离最小的 20
只删除并输出较小者,不是都删除,只输出较小者
发表于 2025-07-01 17:02:18 回复(0)