#P17373. [ECNA 2023] Forest for the Trees

[ECNA 2023] Forest for the Trees

题目描述

你派出一台机器人进入森林,但它迷路了。机器人装有传感器,无论树木之间是否互相遮挡,都能探测到周围的所有树。遗憾的是,这片森林里的树全都长得一样。

你有一张森林地图,所有树木都表示为平面上的点 (x,y)(x,y)。这里过去是一座林场,因此所有树都位于整数坐标处,不过并非每个整数坐标上都有树。

机器人的传感器会以机器人正面所朝方向为基准,给出探测范围内每棵树在两个方向上的距离。然而,机器人相对于地图的朝向未知。因此,每条传感器读数都是一个二元组:

(树在机器人右侧的距离, 树在机器人前方的距离)(\text{树在机器人右侧的距离},\ \text{树在机器人前方的距离})

由于机器人能够探测所有方向,这两个值都可能为负数。

幸运的是,机器人一定停在整数坐标处,朝向也一定与全局坐标系的 xx 轴或 yy 轴正方向或负方向对齐,并且机器人绝不会与某棵树处于同一位置。你能确定机器人的位置吗?

输入格式

第一行包含三个整数:森林中的树木数量 ntn_t、机器人探测到的树木数量 nsn_s,以及任意传感器读数的最大曼哈顿距离 rmaxr_{max}。这里曼哈顿距离是横向距离与纵向距离的绝对值之和。

接下来 ntn_t 行,每行包含两个整数,表示全局坐标系中一棵树的位置 (x,y)(x,y)。

最后 nsn_s 行,每行包含两个整数。第 ii 条传感器读数中的第一个整数 si,xs_{i,x},表示沿垂直于机器人朝向的轴到该树的距离;第二个整数 si,ys_{i,y},表示沿平行于机器人朝向的轴到该树的距离。

保证对所有 ii 都有

∣si,x∣+∣si,y∣≤rmax|s_{i,x}|+|s_{i,y}|\le r_{max}

数据范围如下:

$$0<n_t\le 5000,\qquad 0<n_s\le 1000,\qquad 0<r_{max}\le 1000,$$

且所有树木坐标均满足 −100000≤x,y≤100000-100000\le x,y\le 100000。

输出格式

输出以下三种结果之一:

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