Петрик та вертикальна ферма
Обмеження: 2 сек., 256 МіБ
Сьогодні в Україні ухвалили новий закон про податок на землю, і відповідно до змін до Конституції, тепер потрібно платити не за кожний квадратний метр, а за периметр усієї ділянки.
Петрик захотів відкрити свою вертикальну ферму з вирощування квітів, проте не знав, як можна ефективно знайти периметр цієї вертикальної ферми. Вертикальна ферма складається з глечиків з квітками. В одній точці можуть міститись кілька глечиків.
Допоможіть Петрику знайти периметр опуклої оболонки, яку утворює ця ферма.
Вхідні дані
У першому рядку задано ціле число \(n\) — кількість глечиків з квітками.
У наступних \(n\) рядках задано по два цілих числа \(x_i\) та \(y_i\) — координати глечиків.
Вихідні дані
В одному рядку виведіть дійсне число — периметр опуклої оболонки з абсолютною або відносною похибкою не більшою як \(10^{-7}\).
Якщо в опуклу оболонку входить лише одна точка — периметр буде рівний 0, якщо опукла оболонка є відрізком, то її периметром будемо вважати довжину відрізка.
Обмеження
\(3 \le n \le 10^5\),
\(|x_i|, |y_i| \le 10^9\).
Приклади
| Вхідні дані (stdin) | Вихідні дані (stdout) |
|---|---|
| 5 0 0 2 0 0 2 1 1 2 2 | 8.0000000 |
Примітки
Опуклу оболонку будуть утворювати точки (0;0), (0;2), (2;0) та (2;2). Периметр опуклої оболонки буде рівний сумі довжин відрізків, які утворюють цю опуклу оболонку.
| Element Type | Створено | Хто | Задача | Компілятор | Результат | Час (сек.) | Пам'ять (МіБ) | № | Дії |
|---|