#P1104. Robbery
Robbery
描述
检查员罗布斯托普非常生气。昨晚,一家银行遭到抢劫,而劫匪却逍遥法外。这已经是今年第三次发生这种事了,尽管他已经竭尽全力去阻止劫匪:他以最快的速度封锁了所有出城的道路,让劫匪无路可逃。然后,检查员要求城里的所有人留意劫匪的踪迹,但他收到的唯一消息都是 “我们没看到他” 这样的内容。
但这次,他受够了!检查员罗布斯托普决定分析一下劫匪是如何逃脱的。为此,他请你编写一个程序,利用检查员能得到的关于劫匪的所有信息,来找出劫匪在每个时间点的位置。
巧合的是,被抢劫银行所在的城市呈矩形。出城的道路会被封锁一段特定的时间 ,在这段时间内,会收到一些形如 “在时间 时,劫匪不在矩形 内” 的观察报告。假设劫匪在每个时间步最多移动一个单位,你的程序必须尝试找出劫匪在每个时间步的确切位置。
输入
输入包含多个抢劫案的描述。每个描述的第一行由三个数字 、、()组成,其中 是城市的宽度, 是城市的高度, 是城市被封锁的时间。
接下来一行包含一个整数 (),即检查员收到的消息数量。接下来的 行(每条消息对应一行)每行由五个整数 、、、、 组成。整数 是进行观察的时间(),而 、、、 分别是所观察的(矩形)区域的左边界、上边界、右边界和下边界。(,;点 是城市的左上角, 是城市的右下角)。这些消息意味着在时间 时,劫匪不在给定的矩形内。
输入以一个 开头的测试用例结束。这个用例不应被处理。
输出
对于每个抢劫案,首先输出一行 “Robbery #k:”,其中 是抢劫案的编号。然后,有三种可能的情况:
如果根据收到的消息,劫匪不可能还在城市里,输出一行 “The robber has escaped.”。
在所有其他情况下,假设劫匪确实还在城市里。对于每个能够推断出劫匪确切位置的时间步,输出一行形如 “Time step : The robber has been at .” 的内容。( 和 分别是在时间步 时劫匪所在的列和行)。按时间 顺序输出这些行。
如果无法推断出任何信息,输出一行 “Nothing known.”,并希望检查员不会更加生气。
在每个处理完的用例之后输出一个空行。
输入示例
4 4 5
4
1 1 1 4 3
1 1 1 3 4
4 1 1 3 4
4 4 2 4 4
10 10 3
1
2 1 1 10 10
0 0 0
输出示例
Robbery #1:
Time step 1: The robber has been at 4,4.
Time step 2: The robber has been at 4,3.
Time step 3: The robber has been at 4,2.
Time step 4: The robber has been at 4,1.
Robbery #2:
The robber has escaped.
来源
1999 年中欧中部地区竞赛