Задача A. Апексные гонки

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

Условие

Вас взяли на работу в автомобильную компанию, которая участвует в гонках для рекламы своего продукта. В этом году спрос на гонщиков был выше обычного, и вашей компании достался потенциальный пилот Петя, который, однако, не умеет быстро просчитывать траектории. Вам необходимо ему в этом помочь и разработать идеальную траекторию для гонщика. Траекторией считается линия, описываемая центром автомобиля. Известно, что гоночный трек имеет постоянную ширину w и ровно n поворотов с заданными внешними радиусами Ri. В начальный момент времени координаты старта совпадают с центром автомобиля. В конце пути координаты финиша также будут совпадать с координатами центра автомобиля.

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

Ваша задача написать программу, которая поможет определить угол поворота левого переднего колеса αi для каждого поворота на треке. Именно это колесо задаёт движение автомобиля на этих гонках. Обратите внимание, что у разных колес будет свой угол поворота из-за того, что колеса описывают разные по радиусу окружности. Например, если левое колесо расположено ближе к апексу, то угол его поворота будет больше угла поворота правого колеса, т. к. левое колесо описывает окружность меньшего радиуса. Также необходимо подсчитать общую длину траектории s. Чем лучше и быстрее Вы справитесь, тем больше у вас шансов на повышение внутри компании!

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

В первой строке входного файла находятся 4 числа (x1,y1,x2,y2) - координаты переднего правого и левого заднего колеса автомобиля соответственно. Вторая строка содержит число w - ширину трека. В третьей строке даны два числа (xf,yf) - координаты финиша. В четвертой строке находится число n - количество поворотов. В следующих n строках находятся по 3 числа (Xi,Yi,Ri) - координаты поворота в прямолинейной траектории и внешний радиус поворота.

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

В первой строке выходного файла содержится число s - длина получившейся траектории, которая округляется и выводится с точностью до 5-ого знака после запятой. В следующих n строках находятся значения αi - угол поворота переднего левого колеса на i-ом повороте в радианах, который округляется и выводится с точностью до 5-ого знака после запятой. Если заданную траекторию построить невозможно, вывести только -1.

Ограничения

0 < w ≤ 1000
0 ≤ n ≤ 104
 − 106 < x1,y1,x2,y2,xf,yf,Xf,Yf < 106
w < Ri < 10000

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

Входной файл (input.txt) Выходной файл (output.txt)
1
3 2 1 0
4
13 10
1
2 10 6
17.24700
0.13407
2
5 4 0 1
5.21
3 5.432
2
38.3553 38.3553 6.5
51.3362 -9.9137 6.5
134.91777
0.41026
0.41892

0.088s 0.007s 15