#P2674. Linear world

Linear world

描述
圆盘是平的,没有真正的地平线。任何喜欢冒险的水手,如果长时间盯着鸡蛋和橘子看,得到一些有趣的想法,然后出发去寻找对跖点,他们很快就会发现,远处的船只有时看起来好像在世界边缘消失的原因是,它们正在世界的边缘消失。(特里·普拉切特 - 魔法的颜色)

不久前,人们曾经相信他们生活在 22-D 世界中,如果他们在一个方向上旅行足够长的时间,他们就会从边缘掉下来。即使证明地球是圆的,他们中的一些人仍然害怕前往南半球。

尝试想象一个 11-D(线性)世界。在这样的世界中,只有两个可能的方向(左和右)。这样一个世界的所有居民都是在同一时间被创造的,突然间他们都开始向一个或另一个方向移动(都以相同的恒定速度)。如果两个居民相遇,他们会礼貌地打招呼,然后转身开始向相反的方向移动。当一个居民到达世界的尽头时,他就会消失。

你的任务是确定,对于给定的创造场景,哪个居民以及何时(从创造的那一刻开始计算)将是最后一个消失的居民。您可以假设交换问候和转身所需的时间为 00

输入
输入由创建时刻的多个描述(数据集)组成。文件结构如下:

NN
LVLV
DIRDIR POSPOS NAMENAME
...

  • 第一行定义居民数量 NNN<32000N < 32000)。以值 N=0N=0 开头的数据集表示输入文件的结尾。
  • 第二行包含世界长度 LL(float)和居民的速度 VV(float)。这两个值始终为正值。
  • 在接下来的 NN 行中,有关居民的数据按增加 POSPOS(正方向)的顺序给出:
    • DIRDIR – 初始方向(p“p”P“P”为正,n“n”N“N”为负)
    • POSPOS – 创建时的位置(0POSL0 \leq POS \leq L
    • NAMENAME – 居民姓名(最多 250250 个字符的字符串)

一行中的输入值至少用一个空格分隔,并且输入中没有空行。您可以假设输入始终正确,并且每个数据集只有一个唯一的解。

输出
输出由每个输入数据集的一行组成。第一个值应该是从创建那一刻开始计算的线性世界最后一个居民坠落的时间。值应截断为字段中 1313 个字符宽的字段的两位小数。第二个值应该是居民的姓名。值应使用单个空格字符分隔。

输入数据 1

1  
13.5 2  
p 3.5 Smarty  
4  
10 1  
p 1 Helga  
n 3 Joanna  
p 5 Venus  
n 7 Clever  
0  

输出数据 1

         5.00 Smarty  
         9.00 Venus  

来源
2005 年东南欧