Ctrl K

Через парк в обход прудов

Сложная
Парк — прямоугольник с левым нижним углом в точке (0, 0) и правым верхним в точке (width, height). В нём и вокруг него есть круглые пруды: ponds[i] = [x, y, r] — пруд с центром (x, y) и радиусом r. Пруд может частично или целиком выходить за пределы парка. Нужно пройти из угла (0, 0) в угол (width, height) по любой линии, которая: - целиком лежит внутри парка и касается его границы только в этих двух углах; - не заходит внутрь ни одного пруда и даже не касается его берега. Верните True, если такой путь существует, и False иначе.
Пример 1
width=4, height=3, ponds=[[2, 2, 1]] → True

Пруд касается только верхней стороны парка. Можно пройти под ним, у нижней стороны, и подняться к углу (4, 3) справа от пруда.

Пример 2
width=4, height=4, ponds=[[2, 1, 1], [2, 3, 1]] → False

Нижний пруд касается нижней стороны парка, верхний — верхней, а друг друга они касаются в точке (2, 2). Вместе они перегораживают парк, обойти их нельзя.

Пример 3
width=5, height=5, ponds=[[6, 6, 2]] → False

Угол (5, 5) лежит внутри пруда, дойти до него нельзя.

Ограничения
  • 3 ≤ width, height ≤ 10⁹
  • 1 ≤ len(ponds) ≤ 1000
  • len(ponds[i]) == 3
  • 1 ≤ x, y, r ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамая длинная цепочка салюта СредняяПереправа в прилив СложнаяЗасыпать одну клетку СложнаяСемейства слов на один обмен СложнаяКого вылечить первым Сложная
загружаем Python…
Вход
width=4, height=3, ponds=[[2, 2, 1]]
Ожидается
True

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