A6748 | 「CEOI2013」电车
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
**题目译自 [CEOI2013](https://ceoi2013.hsin.hr/) Day1 T2「[Tram](http://ceoi.inf.elte.hu/probarch/13/tasks_day1.pdf)」**
电车上的座位按网格排列,网格由 $N$ 行(编号为 $1$ 到 $N$)和两列(编号为 $1$ 和 $2$)组成。两个座位之间的距离,一个在第 $R_A$ 行第 $C_A$ 列,另一个在第 $R_B$ 行第 $C_B$ 列,是相应网格方格中心之间的欧几里德距离 $\sqrt{((R_A-R_B)^2+(C_A-C_B)^2}$。
大多数乘客在使用公共交通时喜欢独处,他们总是尽量选择一个离其他乘客尽可能远的座位。更准确地说,当乘客进入电车时,他或她会选择一个空座位,该座位与最近的已占用座位的距离尽可能远。如果有不止一个这样的座位,他们总是会选择行号较小的座位,如果仍然有多个这样的座位,他们会选择列号较小的座位。乘客选择座位后,他或她将一直坐在那里,直到离开电车。如果电车是空的,下一个进入的乘客总是会选择第 $1$ 行第 $1$ 列的座位。
编写一个程序,给定一系列事件,每个事件都是乘客进入或离开电车,确定每个乘客坐在哪里。电车最初是空的。
输入中有 $M$ 个事件,从 $1$ 到 $M$ 按发生的顺序编号。有两种类型的事件:
电车上的座位按网格排列,网格由 $N$ 行(编号为 $1$ 到 $N$)和两列(编号为 $1$ 和 $2$)组成。两个座位之间的距离,一个在第 $R_A$ 行第 $C_A$ 列,另一个在第 $R_B$ 行第 $C_B$ 列,是相应网格方格中心之间的欧几里德距离 $\sqrt{((R_A-R_B)^2+(C_A-C_B)^2}$。
大多数乘客在使用公共交通时喜欢独处,他们总是尽量选择一个离其他乘客尽可能远的座位。更准确地说,当乘客进入电车时,他或她会选择一个空座位,该座位与最近的已占用座位的距离尽可能远。如果有不止一个这样的座位,他们总是会选择行号较小的座位,如果仍然有多个这样的座位,他们会选择列号较小的座位。乘客选择座位后,他或她将一直坐在那里,直到离开电车。如果电车是空的,下一个进入的乘客总是会选择第 $1$ 行第 $1$ 列的座位。
编写一个程序,给定一系列事件,每个事件都是乘客进入或离开电车,确定每个乘客坐在哪里。电车最初是空的。
输入中有 $M$ 个事件,从 $1$ 到 $M$ 按发生的顺序编号。有两种类型的事件:
E 类型的事件对应乘客进入电车,L 类型的事件对应乘客离开电车。对于 L 类型的事件,还会给出整数 $P$,表示在事件 $P$ 进入的乘客在该事件中离开。输入格式
输入的第一行包含两个整数 $N$ 和 $M$,表示电车中的行数和事件数。接下来的 $M$ 行包含事件的描述,其中第 $K$ 行包含事件 $K$ 的描述:要么是字符
输入数据保证每当乘客试图进入电车时,电车中总是至少有一个空座位。
E,要么是字符 L 后跟一个空格和整数 $P_K$ $(1 \leq P_K < K)$。每个 $P_K$ 都是合法的,即事件 $P_K$ 是 E 类型,并且不会有乘客试图离开两次。输入数据保证每当乘客试图进入电车时,电车中总是至少有一个空座位。
输出格式
输出的行数应该等于输入中
E 类型事件的数量。对于每个 E 类型的事件,按其发生的顺序,在一行中输出乘客选择的座位的行号和列号,用一个空格分隔。输入输出样例
输入 #1
3 7 E E E L 2 E L 1 E
输出 #1
1 1 3 2 1 2 3 1 1 1
输入 #2
13 9 E E E E E E E E E
输出 #2
1 1 13 2 7 1 4 2 10 1 2 2 3 1 5 1 6 2
输入 #3
10 9 E E E E L 3 E E L 6 E
输出 #3
1 1 10 2 5 2 7 1 4 2 2 2 4 1
- 对于 $25\%$ 的测试数据,$N \leq 150, M \leq 150$。
- 对于 $45\%$ 的测试数据,$N \leq 1500,M \leq 1500$。
- 对于 $65\%$ 的测试数据,$N \leq 1.5\cdot 10^5, M \leq 1500$。
- 对于 $100\%$ 的测试数据,$1 \leq N \leq 1.5\cdot 10^5, 1 \leq M \leq 3\cdot 10^4$。
- 对于 $45\%$ 的测试数据,$N \leq 1500,M \leq 1500$。
- 对于 $65\%$ 的测试数据,$N \leq 1.5\cdot 10^5, M \leq 1500$。
- 对于 $100\%$ 的测试数据,$1 \leq N \leq 1.5\cdot 10^5, 1 \leq M \leq 3\cdot 10^4$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?