Codeforces Round 102 (Div. 1) |
---|
Закончено |
В последнее время Гном Гриша занят важными раскопками на Кудыкиной горе, однако по понятным причинам (как вы, возможно, помните, он является необычным гномом, и вообще не переносит солнечного света) проводить раскопки Гриша может только ночью, а наутро, до первого луча солнца, должен возвращаться в свой склеп. Поэтому он хочет найти кратчайший маршрут от места раскопок до своего склепа. Вспомнив предыдущий успех участников Codeforces в транспортировке его гроба в склеп, Гриша в очередной раз каким-то чудом оказался в Вашей спальне и настойчиво попросил Вас помочь ему. Как обычно, Вы были не в силах отказать.
После недолгих раздумий, вы формализовали задачу следующим образом: Кудыкина гора, в силу своей правильной формы, оканчивающейся довольно острой вершиной, суть есть конус с радиусом основания r и высотой h. Кладбище, где проводит по ночам раскопки Гриша, а также его склеп — суть две точки на поверхности конуса. Все, что требуется — найти расстояние между точками по поверхности конуса.
Задача осложняется тем, что все подножие горы на уровне земли и даже пространство под горой ископали гномы (интересно, они искали там то же самое, что и Гриша?), поэтому можно считать, что кратчайший путь между точками может проходить не только по боковой поверхности, но и по основанию конуса (и, как частный случай задачи, обе точки могут лежать на основании конуса — см. первый тест из примеров).
В качестве решения его задачи Гришу вполне устроит искомое кратчайшее расстояние между точками, а путь Гриша как-нибудь найдет и сам. Два часа, которые он отвел на решение задачи, уже идут!
В первой строке ввода записаны через пробел целые числа r и h (1 ≤ r, h ≤ 1000) – радиус основания и высота конуса соответственно. Во второй и третьей строках записаны координаты двух точек на поверхности конуса — по три действительных числа через пробел. Координаты точек заданы в системе координат, где начало координат находится в центре основания конуса, а его ось вращения совпадает с осью OZ. В этой системе координат вершина конуса находится в точке (0, 0, h), основание конуса есть круг с центром в точке (0, 0, 0), лежащий в плоскости XOY, а все точки поверхности конуса имеют неотрицательную координату z. Гарантируется, что расстояния от точек до поверхности конуса не превосходят 10 - 12. Все действительные числа на входе имеют не более 16 знаков после десятичной точки.
Выведите длину кратчайшего пути между точками, заданными на входе, с абсолютной или относительной погрешностью не более 10 - 6.
2 2
1.0 0.0 0.0
-1.0 0.0 0.0
2.000000000
2 2
1.0 0.0 0.0
1.0 0.0 1.0
2.414213562
2 2
1.0 0.0 1.0
-1.0 0.0 1.0
2.534324263
2 2
1.0 0.0 0.0
0.0 1.0 1.0
3.254470198
Название |
---|