Задача №114666. Растягивание плоскости

Игорь очень любит геометрию, а поэтому он купил себе плоскость, на которой отмечены \(n\) точек, \(i\)-я из них имеет координаты \((x_i, y_i)\).

Посмотрев на эти точки, Игорь быстро нашёл пару самых удалённых. Однако этого ему было мало, а поэтому для \(q\) чисел \(\alpha_1\), \(\alpha_2\), \(\alpha_3\), ..., \(\alpha_q\) Игорь хочет узнать, каким станет максимальное расстояние между парой точек, если растянуть плоскость в \(\alpha_j\) раз по \(x\)-координате.

Более формально, у Игоря есть \(q\) запросов, в \(j\)-м из которых для числа \(\alpha_j\) Игорь хочет найти расстояние между двумя наиболее удалёнными точками в множестве, состоящем из \(n\) точек с координатами \((x_i \cdot \alpha_j, y_i)\). Помогите Игорю ответить на эти запросы.

Входные данные

Каждый тест состоит из нескольких наборов входных данных. В первой строке вводятся два целых числа \(t\) и \(g\) (\(1 \le t \le 250\,000\), \(0 \le g \le 9\)) — число наборов входных данных и номер группы тестов, под дополнительные ограничения которой подходит данный тест. Далее следуют описания наборов входных данных.

В первой строке каждого набора входных данных вводятся два целых числа \(n\) и \(q\) \((2 \le n \le 500\,000, 1 \le q \le 500\,000)\) — количество точек и количество запросов.

В следующих \(n\) строках вводятся описание точек, в каждой строке вводятся по два целых числа \(x_i\) и \(y_i\) \((-10^9 \le x_i, y_i \le 10^9)\) — координаты \(i\)-й точки. Гарантируется, что координаты всех точек в каждом наборе входных данных различны.

В следующих \(q\) строках вводятся описания запросов, в каждой строке вводится по одному вещественному числу \(\alpha_j\) \((1 \le \alpha_j \le 10^9)\) — коэффициенты, на которые будут умножаться \(x\)-координаты точек в \(j\)-м запросе.

Обозначим за \(N\) сумму \(n_i\) по всем наборам входных данных, а за \(Q\) — сумму \(q_i\) по всем наборам входных данных. Гарантируется, что \(N, Q \le 500\,000\).

Выходные данные

Для каждого набора входных данных выведите \(q\) строк, в \(i\)-й строке должно содержаться единственное вещественное число — ответ на \(i\)-й запрос. Ответ будет считаться правильным, если его абсолютная или относительная погрешность не превышает \(10^{-6}\). Более формально, если \(a\) — ваш ответ, а \(b\) — ответ жюри, то должно выполняться \(\frac{|a-b|}{\max(b,1)} \le 10^{-6}\).

Примечание

При растяжении с коэффициентом 1 наиболее удалёнными точками будут точки с номерами 1 и 5, их координаты будут равны \((0, 0)\) и \((0, 4)\).

При растяжении с коэффициентом 2.5 наиболее удалёнными точками будут точки с номерами 2 и 4, их координаты будут равны \((2.5, 1)\) и \((-2.5, 3)\).

Во втором наборе входных данных максимальное расстояние будет достигаться следующими парами точек:

  • в первом запросе максимальное расстояние будет достигаться между точками с номерами 3 и 7, их координаты будут равны \((14,13)\) и \((-14,13)\),

  • во втором запросе максимальное расстояние будет достигаться между точками с номерами 1 и 5, их координаты будут равны \((0,0)\) и \((0, 15)\),

  • в третьем запросе максимальное расстояние будет достигаться между точками с номерами 3 и 7, их координаты будут равны \((8.75,13)\) и \((-8,75,13)\),

  • в четвёртом запросе максимальное расстояние будет достигаться между точками с номерами 3 и 7, их координаты будут равны \((10.5,13)\) и \((-10.5,13)\).

Система оценки

Тесты к этой задаче состоят из 9 групп. Баллы за каждую группу ставятся только при прохождении всех тестов группы и всех тестов необходимых групп. Обратите внимание, что прохождение тестов из условия не требуется для некоторых групп. Offline-проверка означает, что результаты тестирования вашего решения на данной группе станут доступны только после окончания соревнования.

«Случайные точки» означает, что координаты точек выбираются равновероятно на отрезке от \(-10^9\) до \(10^9\) и независимо друг от друга.

Доп. ограничения
Группа Баллы \(n_i\) \(N\) \(q_i\) \(Q\) Необходимые группы Комментарий
0 0 Тесты из условия
1 12 \(n_i \le 10\) \(N \le 2000\) \(q_i \le 10\) \(Q \le 2000\) 0
2 9 \(n_i \le 2000\) \(N \le 2000\) \(q_i \le 2000\) \(Q \le 2000\) 0 – 1
3 13 \(n_i \le 5000\) \(N \le 5000\) \(q_i \le 10\,000\) \(Q \le 10\,000\) 0 – 2
4 11 \(n_i \le 100\,000\) \(N \le 100\,000\) \(q_i \le 100\,000\) \(Q \le 100\,000\) Случайные точки
5 8 4 Случайные точки
6 12 \(n_i \le 5000\) \(N \le 5000\) \(q_i \le 100\,000\) \(Q \le 100\,000\) 0 – 3
7 11 \(n_i \le 5000\) \(N \le 5000\) 0 – 3, 6
8 10 \(n_i \le 100\,000\) \(N \le 100\,000\) \(q_i \le 100\,000\) \(Q \le 100\,000\) 0 – 4, 6
9 14 0 – 8 Offline-проверка
Примеры
Входные данные
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
Сдать: для сдачи задач необходимо войти в систему