Подразделы

Дата и время

22/11/2024 09:59:53

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

printЛето 7

printD. Зеркала

Ограничения: время – 5s/10s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Однажды злой волшебник Сарумян поглядел в видеочат и узрел там систему из `N` зеркал. Долго думал он, прежде чем внутренний голос подсказал ему, что система не простая. Он понял, что если посмотреть на эту систему под некоторым углом, и увидеть заданную точку `A` через все `N` зеркал (то есть так, чтобы его взгляд отразился через каждое из них ровно по одному разу, а потом попал в точку `A`), то откроются ему все тайны интернета.
Однако светлые силы не дремали и через агентурную сеть выяснили все про этот видеочат.
Требуется написать программу, которая подсказала бы светлым силам, под каким углом нужно посмотреть на систему зеркал, чтобы узнать все тайны интернета.
В первой строке входного файла записано одно число – количество зеркал `N\ (0\ <\ N\ ≤\ 10)`. В следующей строке записаны координаты (`x` и `y`, где ось `x` направлена вправо, ось `y` – вверх) исходной точки (откуда надо смотреть на зеркала) и точки `A`. Далее в `N` строках записана информация о зеркалах – по четыре числа, обозначающие координаты начала и конца зеркала. Отражающая поверхность расположена на левой стороне зеркала (если смотреть от первой точки в направлении второй). С обратной стороны зеркала прозрачны.
Причем выполняются следующие ограничения:
  • Все координаты вещественны и по модулю не превосходят 10000
  • Никакие зеркала не пересекаются
  • Конечная и начальная точки не лежат ни на одном из зеркал
В первую строку выходного файла необходимо записать YES, если решение существует, и NO, если нет. Если решение есть, то во вторую строку надо записать угол в градусах (с точностью до шести знаков после запятой), под которым нужно смотреть на зеркала. Угол отсчитывается против часовой стрелки от оси `"Ox"` и лежит в пределах от 0 до 360 градусов.

Пример ввода

2 
0 0
0 5
1 0 1 2
-1 4 -1 2

Пример вывода

YES
51.340192
Источник: http://neerc.ifmo.ru/school/archive/
loading