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

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

Условие

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

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

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

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

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

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

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

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

Выходной файл "output.txt" должен содержать значения φ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.225s 0.023s 17