#P1304. World's Worst Bus Schedule

World's Worst Bus Schedule

描述

你是个极没耐心的人,最讨厌等待。你正打算前往新奥尔良看望一位亲戚。可问题是,你所在的公交站有着世上最糟糕的公交时刻表!上面既没列出公交的到站时间,也没列出离站时间,仅标注了每趟公交的线路运行时长。由于你性子急,便掏出笔记本电脑,打算编写一个程序,来算出你得等多久下一趟公交才会来。反正你也无事可做,对吧?

输入

该问题的输入由一系列(非空)不超过100 100 个的数据集构成。每个数据集的格式遵循以下描述,且数据集之间没有空行分隔。

单个数据集包含3 3 个部分:

  1. 起始行:仅一行,格式为 "START N",其中N N 表示运行的公交数量,且满足1N20 1 ≤ N ≤ 20
  2. 线路时长行:这类行有 NN 条,每行包含M M 个线路时长1M10(1 ≤ M ≤ 10),这些时长表明每趟公交跑完特定线路后返回公交站所需的时间。线路时长用1 1 10001000(包含 11 1000 1000)之间的整数表示。
  3. 到站时间:每个数据集仅有一行此内容。该行代表你到达公交站并开始等待的时间,即公交开始运行后(所有公交均在时间0 0 开始运行)你到达公交站所经过的时间单位数。这个数字用正整数表示(当然,也可能是0 0,这意味着公交刚开始运行你就到了公交站)。
  4. 结束行:仅一行,内容为 "END"。

最后一个数据集之后会有一行 "ENDOFINPUT"。

输出

每个数据集对应一行输出。这行内容就是你到达后需等待下一趟公交到来的时间单位数。你特别讨厌等待,所以会直接搭乘第一辆回到车站的公交。但愿这就是开往新奥尔良的公交!

注意事项

  1. 所有公交会持续按线路运行,跑完最后一条线路后会重新从第一条线路开始。
  2. 若乘客的到站时间与某趟公交的发车时间一致,该乘客可即刻搭乘这趟公交。

输入示例

START 3
100 200 300
400 500 600
700 800 900
1000
END
START 3 
100 200 300 4 3 2 4 2 22 
800
10 1000
32767
END
ENDOFINPUT

输出示例

200
20

来源

2002 年美国中南部地区竞赛