#AEAI04003. 三维参考物体最近邻选择

三维参考物体最近邻选择

AEAI-04-003. 三维参考物体最近邻选择

题目描述

机械臂在整理桌面物体时,需要知道哪个物体离当前参考物体最近,从而判断是否需要额外避让。给出若干物体的三维坐标、一个参考物体编号 R,以及安全距离阈值 d_safe。请在除参考物体以外的物体中,选出与参考物体三维欧氏距离最小的物体,并输出它的距离和安全标记。

设某个物体相对参考物体的坐标差为 (dx, dy, dz),距离定义为:

sqrt(dx*dx + dy*dy + dz*dz)

若多个物体到参考物体的距离相同,选择编号更小的物体。若选中物体的距离小于等于 d_safe,安全标记为 NEAR,否则为 NORMAL

输入格式

第一行输入整数 N,表示物体数量。

接下来 N 行,每行输入:

id x y z

表示物体编号和三维坐标。所有编号互不相同。

下一行输入参考物体编号 R

最后一行输入一个实数 d_safe

输出格式

输出一行:

id distance status

其中 id 为最近物体编号,distance 为该物体到参考物体的距离,保留 6 位小数;statusNEARNORMAL

判定规则

使用标准输出比较。浮点比较使用 1e-9 容差;距离相同时按编号升序打破并列;距离等于 d_safe 时输出 NEAR

数据范围与提示

  • 2 <= N <= 100000
  • 坐标为有限实数。
  • d_safe >= 0
  • 输入保证参考物体编号存在。
  • 建议比较平方距离,最后只对选中物体开平方输出。

样例 1

输入

4
1 0 0 0
2 3 0 0
3 0 4 0
4 1 2 2
1
3

输出

2 3.000000 NEAR

样例 2

输入

3
10 1 1 1
5 4 5 1
8 1 1 6
10
4

输出

5 5.000000 NORMAL