#P14828. [Bulgarian2014组队赛]cars
[Bulgarian2014组队赛]cars
题目描述
彼得参加一场手工组装汽车比赛。赛道由 个等长扇区组成,编号为 到 。这些扇区按顺序排列,扇区 与扇区 相邻,其中 。此外,赛道是环形的,扇区 与扇区 相邻。
原题此处给出了样例 1 的图:长度为 的环形赛道,有两辆车分别从扇区 3 和扇区 5 出发。

赛道上的行驶方向受到严格限制:只允许按照扇区编号递增的方向行驶。也就是说,汽车可以从扇区 行驶到扇区 (),也可以从扇区 行驶到扇区 ,但禁止反向行驶。
比赛共有 名参赛者报名,每人都提前组装好了自己的汽车。所有人都完成了预赛,预赛确定了各自汽车的速度:第 名参赛者的汽车以恒定整数速度 行驶。
其中 名参赛者已经选择了起始位置:第 名参赛者的汽车从位置 出发,其中 。比赛规则禁止两名参赛者从同一个起始位置出发。
唯一还没有选择起始位置的是第 名参赛者——彼得。他的汽车速度为整数 。
由于所有汽车速度固定,比赛有些无聊,评委决定加入如下规则,让选手们必须谨慎选择起始位置:
当一辆汽车追上另一辆汽车时,被追上的汽车停止行驶,并被取消比赛资格。
每位参赛者都希望在被超越之前尽可能长时间留在比赛中(如果会被超越的话)。
彼得希望从赛道上的空闲扇区中选择自己的起始位置,使自己尽可能晚被取消资格;最好是永远不会被取消资格。
请编写程序 cars,找出对彼得最有利的起始位置。
输入格式
第一行包含三个正整数 ,用空格分隔。
接下来 行,每行包含两个正整数 ,用空格分隔,表示已选择起始位置的第 名参赛者的起始扇区和速度。
输出格式
第一行输出:
- 能让彼得参加时间最长的起始位置数量;
- 一个空格;
- 一个最简分数,形式为
分子/分母,表示从比赛开始到彼得被取消资格经过的时间。
如果存在某个起始位置使彼得永远不会被取消资格,则分数位置输出字符串:
NEVER
如果对应最晚取消资格的起始位置超过 100 个,则第一行中的数量输出 100,第二行也只输出其中最小的 100 个起始位置。
第二行按升序输出这些对彼得有利的起始位置,用单个空格分隔。
数据范围与评分
保证始终至少有一个空闲扇区可供彼得选择,即 。
评分分为 7 组。只有通过某组的所有测试,才能获得该组分数。
| 组别 | 分数 | 限制 |
|---|---|---|
| 1 | 10 | $1\le N\le 100,\ 5\le L\le 500,\ 1\le v_i,v_{peter}\le 200$ |
| 2 | $1\le N\le 300,\ 5\le L\le 10^9,\ 1\le v_i,v_{peter}\le 3000$ | |
| 3 | $1\le N\le 2000,\ 5\le L\le 10000,\ 1\le v_i,v_{peter}\le 10000$ | |
| 4 | $1\le N\le 2000,\ 5\le L\le 10^9,\ 1\le v_i,v_{peter}\le 10000$ | |
| 5 | 20 | $1\le N\le 50000,\ 5\le L\le 10^9,\ 1\le v_i,v_{peter}\le 10^9$ |
| 6 | $1\le N\le 250000,\ 5\le L\le 10^9,\ 1\le v_i,v_{peter}\le 10^9$ | |
| 7 | $1\le N\le 1000000,\ 5\le L\le 10^9,\ 1\le v_i,v_{peter}\le 10^9$ |
样例 1
输入
2 5 3
5 5
3 6
输出
1 1/1
2
样例 1 解释
本例中有两辆车,起始扇区分别为 5 和 3。彼得的车速为 3,是比赛中最慢的车。赛道有 5 个扇区。
彼得的最佳起始位置是位置 2,这能让他参加:
个时间单位,之后被编号为 1、速度为 5 的汽车追上。
彼得还可以选择位置 1 和 4,但它们分别只能让他参加:
和
个时间单位。
样例 2
输入
4 8 6
1 1
4 7
5 1
8 7
输出
2 3/1
3 7
样例 2 解释
如果彼得从位置 3 或 7 出发,将在 3 个时间单位后被取消资格;如果从位置 2 或 4 出发,则会在 2 个时间单位后被取消资格。
样例 3
输入
2 20 10
2 7
8 9
输出
18 NEVER
1 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18 19 20
样例 3 解释
因为彼得拥有最快的汽车,所以他永远不会被取消资格,可以从任意空闲扇区出发。