Ctrl K

Лучшая пара близких маяков

Сложная
Вдоль прямой дороги стоят маяки: beacons[i] = [x, y], где x — координата маяка, а y — его яркость (может быть отрицательной). Маяки перечислены слева направо, координаты строго возрастают. Оценка пары маяков i < j равна y_i + y_j + (x_j − x_i). Брать можно только пары, где расстояние x_j − x_i не больше reach. Верните наибольшую оценку среди таких пар. Гарантируется, что хотя бы одна подходящая пара есть.
Пример 1
beacons=[[0, 4], [2, -1], [3, 6], [10, 2]], reach=3 → 13

Пары в пределах 3: (0, 2) даёт 4 − 1 + 2 = 5, (0, 3) даёт 4 + 6 + 3 = 13, (2, 3) даёт −1 + 6 + 1 = 6. Маяк в точке 10 слишком далеко от остальных. Лучшее — 13.

Пример 2
beacons=[[-5, 1], [0, 0], [4, 9]], reach=4 → 13

Между −5 и 0 расстояние 5, это больше 4. Остаётся одна пара (0, 4): 0 + 9 + 4 = 13.

Ограничения
  • 2 ≤ len(beacons) ≤ 10⁵
  • beacons[i] = [x, y]
  • -10⁸ ≤ x, y ≤ 10⁸
  • 0 ≤ reach ≤ 2 · 10⁸
  • Координаты x строго возрастают
  • Хотя бы одна пара маяков стоит на расстоянии не больше reach
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиМаксимум в скользящем окне СложнаяТёмный промежуток между фонарями СложнаяКороткий отрезок с нужной суммой СложнаяНаибольшая сумма с короткими прыжками СложнаяСамая длинная серия станков в бюджет Сложная
загружаем Python…
Вход
beacons=[[0, 4], [2, -1], [3, 6], [10, 2]], reach=3
Ожидается
13

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