Ctrl K

Лучшая пара выше планок

Сложная
В игре есть n предметов: у предмета j скорость speed[j] и сила power[j]. Его общая ценность — speed[j] + power[j]. Дан список запросов asks, где asks[i] = [x, y]. Для запроса нужно найти предмет со скоростью не меньше x и силой не меньше y, у которого общая ценность наибольшая, и вернуть эту ценность. Если подходящих предметов нет, ответ на запрос -1. Верните список ответов в порядке запросов. Перебор всех предметов для каждого запроса слишком медленный.
Пример 1
speed=[5, 2, 8, 3], power=[1, 7, 4, 6], asks=[[3, 2], [1, 6], [6, 5]] → [12, 9, -1]

Запрос [3, 2]: подходят предметы 2 (8 + 4 = 12) и 3 (3 + 6 = 9), ответ 12. Запрос [1, 6]: предметы 1 (9) и 3 (9), ответ 9. Запрос [6, 5]: ни у кого нет скорости ≥ 6 и силы ≥ 5 одновременно, ответ -1.

Пример 2
speed=[4, 4], power=[4, 9], asks=[[4, 4], [5, 1]] → [13, -1]

Первому запросу подходят оба предмета, лучший даёт 13; второму не подходит никто.

Ограничения
  • 1 ≤ n = len(speed) = len(power) ≤ 10⁵
  • 1 ≤ speed[j], power[j] ≤ 10⁹
  • 1 ≤ len(asks) ≤ 10⁵
  • 1 ≤ x, y ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПервая общая крыша СложнаяВторое большее справа СложнаяРаздача с самой младшей карты СложнаяМеньшие справа СложнаяСуммы отрезков в заданной полосе Сложная
загружаем Python…
Вход
speed=[5, 2, 8, 3], power=[1, 7, 4, 6], asks=[[3, 2], [1, 6], [6, 5]]
Ожидается
[12, 9, -1]

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