题目描述
三维空间中有 n 个球体,编号为 1,2,…,n。第 i 个球体 Si 的中心位于
(xi,yi,zi),
半径为 ri。
设 d(i,j) 为 Si 和 Sj 的最短间距:分别从 Si 与 Sj 的表面或内部选择一点 P 和一点 Q,d(i,j) 是 P,Q 在三维空间中的最小欧几里得距离。
将所有满足 1≤i<j≤n 的 d(i,j) 排成一列,请求出其中最小的 k 个值。
输入格式
第一行包含两个正整数 n,k,含义如题目描述所述。
接下来 n 行,每行包含四个整数 xi,yi,zi,ri,表示第 i 个球体的球心坐标和半径。
输出格式
输出一行 k 个非负整数,表示最小的 k 个 d(i,j),按照不降顺序输出。
为了避免精度误差,你只需要输出
⌈d(i,j)⌉,
即 d(i,j) 向上取整后的值。
样例 1
输入
4 6
0 0 0 1
0 3 2 2
3 2 1 1
1 1 2 2
输出
0 0 0 1 1 2
数据范围
对于全部测试数据:
2≤n≤2×105,
1≤k≤min(300,(2n)),
0≤xi,yi,zi≤106,1≤ri≤106.
| 子任务编号 |
n≤ |
k≤ |
特殊性质 |
分值 |
| 1 |
2000 |
300 |
无 |
16 |
| 2 |
2×105 |
1 |
| 3 |
20 |
| 4 |
300 |
xi,yi,zi≤1000 |
| 5 |
所有 xi,yi,zi 随机生成 |
| 6 |
无 |
20 |