printРабочее место участника

printЗадачи

1498. Рикошет

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

12053.png
Абдулла спрятался от выстрелов за забором, но красноармеец Сухов решил применить рикошет пули от цистерны, чтобы попасть в бандита. Известно, что при рикошете угол падения равен углу отражения (см. рис).
Напишите программу, которая рассчитает направление выстрела.
В первой строке ввода содержатся четыре целых числа – координаты цели `X_a`, `Y_a` (`0\ ≤\ X_a,\ Y_a\ ≤\ 10^4`) и координаты стрелка `X_s`, `Y_s` (`0\ ≤\ X_s,\ Y_s\ ≤\ 10^4`). Во второй строке четыре целых числа – координаты концов забора `X_1`, `Y_1`, `X_2`, `Y_2` (`0\ ≤\ X_1,\ Y_1,\ X_2,\ Y_2\ ≤\ 10^4`) В третьей строке три целых числа – координаты центра цистерны `X_c`, `Y_c` (`0\ ≤\ X_c,\ Y_c\ ≤\ 10^4`) и ее радиус `R_c` (`1\ ≤\ R_c\ ≤\ 1000`). Цистерна и забор не пересекаются и не соприкасаются. Координаты цели и стрелка находятся вне цистерны и не рядом с забором. Отрезок между стрелком и целью пересекается (или соприкасается) с отрезком забора.
Вывести одно число – направление выстрела `D` в градусах с точностью не менее `10^{-4}` (`0\ ≤\ D\ <\ 360`). Если попасть в цель невозможно, то вывести сообщение "No solution" (без кавычек).
Примечание. Пуля не может пролететь сквозь забор или соприкасаться с забором. В тестах с существующим решением траектория пули проходит на значительном удалении от забора (не менее 0.1).

Пример ввода

4 4 4 0
3 2 5 2
1 2 1

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

135.0000
loading