Изменения рейтингов за последние раунды временно удалены. Скоро они будут возвращены. ×

E. Кратчайший путь корабля
ограничение по времени на тест
2 seconds
ограничение по памяти на тест
256 megabytes
ввод
стандартный ввод
вывод
стандартный вывод

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

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

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

Вам повезло — у вас есть умные и сильные рабочие, которые могут помочь в вашем путешествии. Они могут перемещать корабль по морю: это стоит 1 египетский фунт за каждую единицу расстояния по морю. Они так же могут даже нести корабль по суше (они очень сильные!): это стоит 2 египетских фунта за каждую единицу расстояния по территории острова. Ваши деньги рабочие делят между собой поровну, поэтому количество рабочих значения не имеет.

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

Вам задана карта моря, вам необходимо определить наименьшую возможную стоимость путешествия.

Вы начинаете в точке (xStart, yStart), и должны приплыть в точку (xEnd, yEnd). Гарантируется, что эти точки различны.

Остров представляет собой выпуклый многоугольник. Никакие 3 точки многоугольника не лежат на одной прямой. Также начальная и конечная точка не лежат внутри или на границе острова. Точки многоугольника заданы в порядке обхода против часовой стрелки.

Входные данные

В первой строке записано 4 целых числа, xStart, yStart, xEnd и yEnd ( - 100 ≤ xStart, yStart, xEnd, yEnd ≤ 100). Во второй строке записано целое число n, количество точек в многоугольнике (3 ≤ n ≤ 30), на следующей строке записано n пар целых чисел x и y — координаты точек многоугольника ( - 100 ≤ x, y ≤ 100), все точки многоугольника различны.

Выходные данные

Выведите минимальную возможную стоимость. Абсолютная или относительная погрешность ответа не должна превосходить 10 - 6.

Примеры
Входные данные
1 7 6 7
4
4 2 4 12 3 12 3 2
Выходные данные
6.000000000
Входные данные
-1 0 2 0
4
0 0 1 0 1 1 0 1
Выходные данные
3.000000000