eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Кухонный робот

Кухонный робот

Роботы со временем становятся все популярнее. Сегодня их используют не только на больших заводах, но и в домашних условиях. Один программист вместе со своими друзьями решили создать своего собственного домашнего робота. Как Вы знаете, большинство программистов любит собираться на вечеринки и пить пиво. После ее завершения на столе остается множество пустых бутылок. Поэтому было решено создать робота, который будет способен собрать пустые бутылки со стола. Стол представляет собой прямоугольник с длиной $l$ и шириной $w$. Робот стартует с точки $(x_r, y_r)$ и $n$ бутылок находится в точках $(x_i, y_i)~(1 \le i \le n)$. Для того чтобы забрать бутылку, робот должен переместиться в точку где она расположена и взять ее, после чего отнести бутылку в некоторую точку на границе стола и отпустить ее. В любой момент времени робот может держать только одну бутылку, а отпускать ее только на границе стола. \includegraphics{https://static.e-olymp.com/content/17/17a74c81566624ed3d69bb72090a44e90e610661.jpg} Размеры бутылок и робота считайте пренебрежимо малыми (робот и бутылки являются точками). Роботу, держащему бутылку, можно передвигаться через точку, в которой находится другая бутылка. Одной из подпрограмм робота является планирование маршрута. Вам следует написать программу, которая найдет маршрут минимальной длины, по которому робот соберет все бутылки. \InputFile Первая строка содержит два целых числа $w$ и $l~(2 \le w, l \le 1000)$ --- ширина и длина стола. Вторая строка содержит количество бутылок на столе $n~(1 \le n \le 18)$. Каждая из следующих $n$ строк содержит два целых числа $x_i$ и $y_i~(0 < x_i < w, 0 < y_i < l)$ --- координаты $i$-ой бутылки. Никакие две бутылки не располагаются в одной точке. Последняя строка содержит два целых числа $x_r$ и $y_r~(0 < x_r < w, 0 < y_r < l)$ --- координаты начального положения робота. Робот не находится в одной точке ни с какой бутылкой. \OutputFile Вывести длину кратчайшего пути, по которому робот соберет все бутылки. Ошибка точности вычислений не должна превышать $10^{-6}$.
Лимит времени 1 секунда
Лимит использования памяти 256 MiB
Входные данные #1
3 4
2
1 1
2 3
2 1
Выходные данные #1
5.60555127546399
Автор Fedor Tsarev
Источник 2010 ACM NEERC, Northern Subregion, October 30, Problem K