题目描述
伊戈尔非常热爱几何学,因此他购买了一个平面,上面标记了 n 个点,第 i 个点的坐标为 (xi,yi)。
观察这些点后,伊戈尔很快找到了距离最远的一对点。然而,这对他来说还不够,因此对于 q 个数字 α1,α2,α3,…,αq,他想知道如果将平面沿 x 坐标拉伸 αj 倍后,点对之间的最大距离会变成多少。
更正式地,伊戈尔有 q 个查询,在第 j 个查询中,对于数字 αj,伊戈尔希望找到由 n 个点组成的新点集(坐标为 (xi⋅αj,yi))中距离最远的两点之间的距离。请帮助伊戈尔回答这些查询。
输入格式
每个测试点包含多组输入数据。第一行包含两个整数 t 和 g (1≤t≤250000,0≤g≤9),分别表示输入数据的组数和子任务编号。接下来是各组数据的描述。
每组数据的第一行包含两个整数 n 和 q (2≤n≤500000,1≤q≤500000),分别表示点的数量和查询的数量。
接下来的 n 行描述点的坐标,每行包含两个整数 xi 和 yi (−109≤xi,yi≤109),表示第 i 个点的坐标。保证每组数据中所有点的坐标各不相同。
接下来的 q 行描述查询,每行包含一个实数 αj (1≤αj≤109),表示第 j 个查询中 x 坐标的拉伸系数。
设 N 为所有数据组中 n 的总和,Q 为所有数据组中 q 的总和。保证 N,Q≤500000。
输出格式
对于每组输入数据,输出 q 行,每行包含一个实数,即第 i 个查询的答案。答案被认为是正确的,如果其绝对误差或相对误差不超过 10−6。更正式地,如果 a 是你的答案,b 是评委的答案,则应满足 max(b,1)∣a−b∣≤10−6。
2 0
5 2
0 0
1 1
0 2
-1 3
0 4
1
2.5
8 4
0 0
6 11
7 13
4 14
0 15
-4 14
-7 13
-6 11
2
1
1.25
1.5
4.000000
5.385165
28.000000
15.000000
17.500000
21.000000
数据范围与提示
详细子任务附加限制及分值如下表所示。其中子任务 0 是样例。
子任务 |
分值 |
附加限制 |
子任务依赖 |
备注 |
1 |
12 |
ni≤10,N≤2000,qi≤10,Q≤2000 |
0 |
|
2 |
9 |
ni≤2000,N≤2000,qi≤2000,Q≤2000 |
0∼1 |
3 |
13 |
ni≤5000,N≤5000,qi≤10000,Q≤10000 |
0∼2 |
4 |
11 |
ni≤100000,N≤100000,qi≤100000,Q≤100000 |
|
随机点(坐标在 −109 到 109 间均匀随机选择) |
5 |
8 |
|
4 |
6 |
12 |
ni≤5000,N≤5000,qi≤100000,Q≤100000 |
0∼3 |
|
7 |
11 |
ni≤5000,N≤5000 |
0∼3,6 |
8 |
10 |
ni≤100000,N≤100000,qi≤100000,Q≤100000 |
0∼4,6 |
9 |
14 |
|
0∼8 |