P17373 [ECNA 2023] Forest for the Trees

题目描述

你派出一台机器人进入森林,但它迷路了。机器人装有传感器,无论树木之间是否互相遮挡,都能探测到周围的所有树。遗憾的是,这片森林里的树全都长得一样。 你有一张森林地图,所有树木都表示为平面上的点 $(x,y)$。这里过去是一座林场,因此所有树都位于整数坐标处,不过并非每个整数坐标上都有树。 机器人的传感器会以机器人正面所朝方向为基准,给出探测范围内每棵树在两个方向上的距离。然而,机器人相对于地图的朝向未知。因此,每条传感器读数都是一个二元组: $$ (\text{树在机器人右侧的距离},\ \text{树在机器人前方的距离}) $$ 由于机器人能够探测所有方向,这两个值都可能为负数。 幸运的是,机器人一定停在整数坐标处,朝向也一定与全局坐标系的 $x$ 轴或 $y$ 轴正方向或负方向对齐,并且机器人绝不会与某棵树处于同一位置。你能确定机器人的位置吗?

输入格式

第一行包含三个整数:森林中的树木数量 $n_t$、机器人探测到的树木数量 $n_s$,以及任意传感器读数的最大曼哈顿距离 $r_{max}$。这里曼哈顿距离是横向距离与纵向距离的绝对值之和。 接下来 $n_t$ 行,每行包含两个整数,表示全局坐标系中一棵树的位置 $(x,y)$。 最后 $n_s$ 行,每行包含两个整数。第 $i$ 条传感器读数中的第一个整数 $s_{i,x}$,表示沿垂直于机器人朝向的轴到该树的距离;第二个整数 $s_{i,y}$,表示沿平行于机器人朝向的轴到该树的距离。 保证对所有 $i$ 都有 $$ |s_{i,x}|+|s_{i,y}|\le r_{max} $$ 数据范围如下: $$ 0

输出格式

输出以下三种结果之一: - 如果恰能确定机器人的位置与朝向,则输出机器人的坐标 $x,y$,两个整数之间以一个空格分隔; - 如果地图上不存在任何能够产生这些传感器读数的位置与朝向,输出 `Impossible`; - 如果有至少两种不同的位置和/或朝向能够产生这些传感器读数,输出 `Ambiguous`。