#P16561. [Bapc2022]kiosk construction
[Bapc2022]kiosk construction
题目背景
你准备经营一座露营地,并把场地划分成 个方格地块,每个地块被赋予一个互不相同的编号。现在需要选择一个地块修建接待服务亭。
游客不会沿最短路前往自己的地块,而是会根据地块编号执行一种固定的贪心移动规则。你希望选择一个服务亭位置,使所有游客最终都能到达目标,并让最远游客的步行距离尽可能小。
题目描述
给定一个 的网格。每个格子有一个编号 ,所有编号 各出现恰好一次。
游客从服务亭所在格出发,目标是编号为 的地块。每一步执行以下操作:
- 查看当前格上下左右四个方向中存在的相邻格;
- 选择编号与目标编号 的差的绝对值最小的相邻格;
- 若有两个相邻格并列,则在这两个格中选择编号与当前格编号的差的绝对值更小者;
- 移动到所选相邻格,并重复上述过程,直到到达目标地块。
这个过程在某些情况下可能永远无法到达目标,例如进入循环。
你需要选择一个服务亭位置,使从该位置出发前往任意目标地块时,上述过程都能终止并到达目标。在所有合法位置中,最小化到任意地块的最大步数。
若不存在合法位置,输出 impossible。
下图展示了样例 3。把服务亭放在编号 的地块时,所有地块都能在至多 步内到达;若放在编号 的地块,则无法到达编号 的地块。

样例 3 示意图
输入格式
第一行包含两个整数 ,表示网格的行数和列数。
接下来 行,每行包含 个整数。第 行的第 个整数为 。
保证 到 的每个整数恰好出现一次。
输出格式
若存在合法服务亭位置,输出两个整数:
- 服务亭所在格的编号;
- 从该位置到任意目标地块的最大步数。
若有多个最优解,可以输出任意一个。
若不存在合法位置,输出:
impossible
数据范围
样例 1
输入
2 3
1 2 3
6 5 4
输出
2 2
样例 2
输入
3 3
1 4 8
7 5 2
3 9 6
输出
impossible
样例 3
输入
3 3
9 3 1
4 7 2
8 6 5
输出
4 3