Поштові відділення#2565

Поштові відділення

1 секунда
64 мегабайти
Дуже складна

Вам дано місцезнаходження всіх поштових відділень на Землі та набір пунктів призначення для різних посилок. Для кожної посилки ви повинні знайти максимально можливу множину поштових відділень, які підходять як пункти призначення для цієї посилки. Ця множина повинна задовольняти таким умовам:

У цій задачі Земля вважається ідеальною кулею з радіусом 6381 км. Відстань між двома точками розраховується за формулою гаверсинусів:

A = sin((lat1-lat2)/2)^2 + cos(lat1) · cos(lat2) · (sin((long1-long2)/2)^2);

DISTANCE = 6381 · 2 · atan2(sqrt(A), sqrt(1-A));

(Можна використовувати й інші формули, якщо бажаєте, але зауважте, що формула з арккосинусом має значні похибки округлення на малих відстанях, що може призвести до неправильних результатів.)

Вхідні дані

Вхідний файл є бінарним; усі числа записані у форматі little-endian. Він містить у такому порядку:

  • 4 байти — кількість поштових відділень (ціле число, не більше )

  • Для кожного поштового відділення — два числа (по 4 байти кожне), що позначають широту і довготу (у градусах) поштового відділення. Числа зберігаються у вигляді дійсних чисел одинарної точності IEEE754. Усі широти знаходяться в інтервалі від до градусів; усі довготи — від до градусів.

  • 4 байти — кількість посилок (ціле число, не більше )

  • Для кожної посилки — два числа (по 4 байти кожне), що позначають широту і довготу (у градусах) пункту призначення. Числа зберігаються у вигляді дійсних чисел одинарної точності IEEE754. Усі широти знаходяться в інтервалі від до градусів; усі довготи — від до градусів.

Вихідні дані

Вихідний файл також є бінарним і містить лише 32-бітові цілі числа у форматі little-endian. Для кожного з рядків у вхідному файлі він повинен містити:

  • Одне ціле число — кількість поштових відділень у множині призначення

  • цілих чисел — індекси поштових відділень із множини призначення, відсортовані у порядку зростання (менші індекси першими). Індекс першого поштового відділення у вхідному файлі дорівнює (тобто всі індекси від до включно).

Приклади

Приклад 1

Loading
Loading