Ctrl K

Ближайший просторный номер

Сложная
В гостинице есть номера, описанные массивом rooms: запись [number, area] означает номер с уникальным числом number и площадью area. Гости бронируют по массиву guests: запрос [want, need] значит, что гость хочет номер как можно ближе к числу want, но площадью не меньше need. Среди номеров площадью не меньше need выбирается тот, у которого |number - want| наименьшее; при равенстве — с меньшим number. Если подходящих номеров нет, ответ -1. Запросы независимы: номер, выбранный для одного гостя, остаётся доступным и для остальных. Верните массив ответов в порядке запросов.
Пример 1
rooms=[[101, 20], [104, 35], [108, 15], [110, 40]], guests=[[105, 30], [109, 10], [107, 38], [100, 50]] → [104, 108, 110, -1]

Первому гостю подходят номера 104 и 110, ближе 104. Второму подходят все, ближе всех 108 и 110 (на расстоянии 1) — берём меньший, 108. Третьему подходит только 110. Номеров площадью от 50 нет, поэтому -1.

Пример 2
rooms=[[7, 5]], guests=[[1, 5], [7, 6]] → [7, -1]

Единственный номер подходит первому гостю по площади, как бы далеко он ни был, а второму мал.

Ограничения
  • 1 ≤ len(rooms) ≤ 10⁵
  • 1 ≤ len(guests) ≤ 10⁴
  • 1 ≤ number, want ≤ 10⁷
  • 1 ≤ area, need ≤ 10⁷
  • Все number различны
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСколько цветёт в день визита СложнаяРаздача с самой младшей карты СложнаяПодъём по строкам и столбцам СложнаяОдна правка до лучшего совпадения СредняяБлизкие показания рядом Сложная
загружаем Python…
Вход
rooms=[[101, 20], [104, 35], [108, 15], [110, 40]], guests=[[105, 30], [109, 10], [107, 38], [100, 50]]
Ожидается
[104, 108, 110, -1]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 205 тестов на сервере, включая скрытые.