#345. 火星探险问题

火星探险问题

题目描述

火星探险队的登陆舱将在火星表面着陆,登陆舱内有多部障碍物探测车。登陆舱着陆后, 探测车将离开登陆舱向先期到达的传送器方向移动。探测车在移动中还必须采集岩石标本。 每一块岩石标本由最先遇到它的探测车完成采集。每块岩石标本只能被采集一次。岩石标本 被采集后,其他探测车可以从原来岩石标本所在处通过。探测车不能通过有障碍的地面。本 题限定探测车只能从登陆处沿着向南或向东的方向朝传送器移动,而且多个探测车可以在同 一时间占据同一位置。如果某个探测车在到达传送器以前不能继续前进,则该车所采集的岩 石标本将全部损失。 «编程任务: 用一个P×Q\red{P\times Q} 网格表示登陆舱与传送器之间的位置。登陆舱的位置在(X1,Y1)\red{(X_1,Y_1)}处,传送器 的位置在(XP,YQ)\red{(X_P ,Y_Q)}处。 img

给定每个位置的状态,计算探测车的最优移动方案,使到达传送器的探测车的数量最多, 而且探测车采集到的岩石标本的数量最多。

输入格式

文件的第1\red{1}行为探测车数,第2\red{2} 行为P\red{P}的值,第3\red{3} 行为 Q\red{Q} 的值。接下来的Q\red{Q} 行是表示登陆舱与传送器之间的位置状态的P×Q\red{P\times Q} 网格。用3\red{3} 个数字表 示火星表面位置的状态:0\red{0} 表示平坦无障碍,1\red{1}表示障碍,2\red{2} 表示石块。

输出格式

程序运行结束时,将每个探测车向传送器移动的序列输出.每行包含探测车号和一个移动方向,0\red{0} 表示向南移动,1\red{1} 表示向东移动。

样例

输入样例

2
10
8
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 1 0 0 0
0 0 0 1 0 2 0 0 0 0
1 1 0 1 2 0 0 0 0 1
0 1 0 0 2 0 1 1 0 0
0 1 0 1 0 0 1 1 0 0
0 1 2 0 0 0 0 1 0 0
0 0 0 0 0 0 0 0 0 0

输出样例

1 1
1 1
1 1
1 1
1 0
1 0
1 1
1 1
1 1
1 1
1 0
1 0
1 1
1 0
1 0
1 0
2 1
2 1
2 1
2 1
2 0
2 0
2 0
2 0
2 1
2 0
2 0
2 1
2 0
2 1
2 1
2 1