Задача F. Подвижный манипулятор

Автор:А. Баранов, Д. Горячкин   Ограничение времени:1 сек
Входной файл:input.txt   Ограничение памяти:256 Мб
Выходной файл:output.txt  

Условие

Начинающий программист Вася увлекается робототехникой и посещает турниры, посвященные этой тематике. В рамках каждого турнира перед участниками ставится набор задач, для решения которых требуется писать программу для специализированного робота. Одной из таких задач Вася захотел с вами поделиться.

Имеется манипулятор, состоящий из 2-х звеньев (костей), управляемых моторами. Моторы могут поворачиваться на некоторый положительный угол, заданный в радианах. Требуется, получив на вход координаты (x0, y0), определить, на сколько радиан нужно повернуть каждый из моторов, чтобы манипулятор занял указанную позицию. Начало отсчета координат — крепление первой кости. Длины и углы поворота каждой из костей ограничены.

Формат входного файла

Входной файл содержит набор вещественных чисел:

R1, R2 — размеры 1-й и 2-й кости;

F1, F2 — максимальный раствор угла для каждой из костей;

x0, y0 — координаты назначения.

Формат выходного файла

Выходной файл должен содержать вещественные значения φ1, φ2 — углы поворота для каждого из моторов, указанные с точностью не менее 5 знаков после запятой.

Если решение не может быть найдено, вывести -1.

Ограничения

Все тесты подобраны таким образом, чтобы снизить влияние погрешности машинного округления на результат решения.

10 > R1 ≥ R2 > 0, π > (F1, F2) > 0,

x0 ∈ [ − 10, 10], y0 ∈ [0, 10]

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1
 0.50000  0.25000  3.14159  3.14159  0.50000  0.50000
 0.54936
 2.41886
2
 0.50000  0.50000  3.14159  3.14159 -0.75000  0.75000
-1

0.127s 0.061s 15