Ctrl K

Поворотная камера

Сложная
Камера наблюдения закреплена в точке camera = [cx, cy] на плоскости: сдвинуть её нельзя, но можно повернуть в любую сторону. Её поле зрения — сектор шириной view_angle градусов, **границы сектора входят** в обзор. На плоскости отмечены цели targets[i] = [xi, yi]. Цель видна, если направление от камеры на неё попадает в сектор. Цели не загораживают друг друга, несколько целей могут стоять в одной точке. Цель, стоящая ровно в точке камеры, видна при любом повороте. Верните наибольшее число целей, которые можно увидеть одновременно, выбрав направление камеры.
Пример 1
targets=[[5, 2], [2, 5], [0, 2], [2, 0]], view_angle=90, camera=[2, 2] → 2

Цели лежат от камеры строго на восток, север, запад и юг. Угол обзора 90° вмещает две соседние, например восток и север (границы входят).

Пример 2
targets=[[3, 3], [6, 6], [3, 3], [4, 7]], view_angle=10, camera=[3, 3] → 3

Две цели стоят прямо на месте камеры и видны всегда. Из двух остальных в кадр 10° помещается только одна: направления на них отличаются примерно на 31°.

Пример 3
targets=[[9, 1], [9, 9], [1, 9]], view_angle=0, camera=[1, 1] → 1

При нулевом угле видно только то, что лежит точно на одной линии взгляда, — здесь каждая цель на своём направлении.

Ограничения
  • 1 ≤ len(targets) ≤ 10⁵
  • 0 ≤ view_angle < 360
  • 0 ≤ cx, cy, xi, yi ≤ 100
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБлижайшая пара датчиков СложнаяПары углов без лишних соседей СложнаяУбрать одну точку СложнаяЧистый прямоугольник на кнопках СложнаяСамый маленький загон Средняя
загружаем Python…
Вход
targets=[[5, 2], [2, 5], [0, 2], [2, 0]], view_angle=90, camera=[2, 2]
Ожидается
2

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