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

printЗадачи

1650. В школу на велосипеде

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

Петя любит ездить в школу на велосипеде. Но ездить на велосипеде по тротуарам запрещено, а ездить по дороге опасно. Поэтому Петя ездит только по специальным велосипедным дорожкам. К счастью, и Петин дом, и Петина школа находятся в непосредственной близости от таких дорожек.
В городе, где живет Петя есть ровно две велосипедных дорожки. Каждая дорожка имеет форму окружности. В точках их пересечения можно переехать с одной дорожки на другую.
Петя знает точку, в которой он заезжает на дорожку и точку, в которой следует съехать, чтобы попасть в школу. Петю заинтересовал вопрос: какое минимальное расстояние ему следует проехать по дорожкам, чтобы попасть из дома в школу.
Ввод
Будем считать, что в городе введена прямоугольная декартова система координат.
Первые две строки входного файла описывают велосипедные дорожки. Каждая из них содержит по три целых числа – координаты центра окружности, которую представляет собой соответствующая дорожка, и ее радиус. Координаты и радиус не превышают `200` по абсолютной величине, радиус – положительное число. Гарантируется, что дорожки не совпадают.
Следующие две строки содержат по два вещественных числа – координаты точки, где Петя заезжает на дорожку и точки, в которой Петя съезжает с дорожки. Гарантируется, что каждая из точек с высокой точностью лежит на одной из дорожек (расстояние от точки до центра одной из окружностей отличается от ее радиуса не более чем на `10^{-8}`). Точки могут лежать как на одной дорожке, так и на разных.
Вывод
Выведите в выходной файл минимальное расстояние, которое следует проехать Пете по велосипедным дорожкам, чтобы попасть из дома в школу. Ответ должен отличаться от правильного не более чем на `10^{-4}`.
Если доехать из дома до школы по велосипедным дорожкам невозможно, выведите в выходной файл число `-1`.

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

0 0 5
4 0 3
3.0 4.0
1.878679656440357 -2.121320343559643

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

8.4875540166

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

0 0 5
4 0 3
4.0 3.0
4.0 -3.0

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

6.4350110879

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

0 0 4
10 0 4
4.0 0.0
6.0 0.0

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

-1
15035.png
Источник: V Всероссийская командная олимпиада школьников по программированию, 2004
loading