#P14820. [Bulgarian2015组队赛]closestpoints

[Bulgarian2015组队赛]closestpoints

`

题目描述

Eleanora 得到了一台传送器。它不仅能在空间中传送她,还可能把她传送到平行宇宙中。这个装置当然很酷,但也有缺点:每次传送后,她可能出现在某个若干维宇宙中的任意坐标位置。

Eli 的探索精神仍然没有消失。每次传送之后,她都想找到离自己最近的一颗太阳,并前往那里寻找智慧生命。她知道每个平行宇宙中所有太阳的坐标,但要找出离当前位置最近的太阳并不容易。

你的任务如下:给定 KK 维空间中的 NN 个点,其中 K5K \le 5,程序需要回答 QQ 个询问。每个询问给出当前坐标 (C1,C2,,CK)(C_1,C_2,\dots,C_K),要求求出它到给定 NN 个点中最近点的距离。

两个 KK 维点 (Ci1,Ci2,,CiK)(C_{i1},C_{i2},\dots,C_{iK})(Cj1,Cj2,,CjK)(C_{j1},C_{j2},\dots,C_{jK}) 之间的距离按标准欧几里得距离计算:

$$d=\sqrt{(C_{i1}-C_{j1})^2+(C_{i2}-C_{j2})^2+\cdots+(C_{iK}-C_{jK})^2}.$$

输入格式

第一行输入两个自然数 N,KN,K,用空格分隔,分别表示点的数量和空间维数。

接下来 NN 行,每行包含 KK 个整数,用空格分隔:

Di1 Di2  DiKD_{i1}\ D_{i2}\ \dots\ D_{iK}

表示第 ii 个太阳点的坐标。

接下来一行输入一个自然数 QQ,表示询问数量。

接下来 QQ 行,每行包含 KK 个整数:

Ci1 Ci2  CiKC_{i1}\ C_{i2}\ \dots\ C_{iK}

表示一次询问中的当前位置坐标。

输出格式

对于每个询问,输出一行一个实数,表示它到 NN 个点中最近点的最小距离。

答案需要四舍五入并格式化为小数点后恰好 33 位。

数据范围

  • 1N1000001 \le N \le 100000
  • 1K51 \le K \le 5
  • 1Q1000001 \le Q \le 100000
  • 1000000Dij,Cij1000000-1000000 \le D_{ij}, C_{ij} \le 1000000
  • 20%20\% 的测试中,K=1K=1
  • 50%50\% 的测试中,K2K \le 2
  • 除样例外,点会以随机方式生成,即在允许坐标范围内,每个位置出现太阳的概率相同;
  • 输入的 NN 个点之间可能有重合点,询问点之间也可能有重合点。

样例

输入

11 4
-3 -9 9 -5
8 -4 5 -10
7 -5 -4 -6
0 -9 -5 10
10 10 -2 10
-7 8 3 -2
3 -5 5 -9
-9 9 -5 -4
3 5 0 -6
5 6 9 -6
3 -5 5 -9
5
-9 9 -9 -1
7 2 -8 7
6 5 -9 -8
7 2 -8 7
0 -9 -5 10

输出

5.000
10.863
9.695
10.863
0.000

样例解释

Eli 位于四维空间,给定了 1111 个太阳点。她提出了 55 个询问:

  1. 对于点 (9,9,9,1)(-9,9,-9,-1),最近的给定点是 (9,9,5,4)(-9,9,-5,-4),距离为 55
  2. 对于点 (7,2,8,7)(7,2,-8,7),最近的给定点是 (10,10,2,10)(10,10,-2,10),距离约为 10.86278049110.862780491
  3. 对于点 (6,5,9,8)(6,5,-9,-8),最近的给定点是 (3,5,0,6)(3,5,0,-6),距离约为 9.6953597159.695359715
  4. 第四个询问与第二个询问相同。
  5. 对于点 (0,9,5,10)(0,-9,-5,10),给定点中存在坐标完全相同的点,因此答案为 0.0000.000