Петрик та вертикальна ферма
Limits: 2 sec., 256 MiB
Сьогодні в Україні ухвалили новий закон про податок на землю, і відповідно до змін до Конституції, тепер потрібно платити не за кожний квадратний метр, а за периметр усієї ділянки.
Петрик захотів відкрити свою вертикальну ферму з вирощування квітів, проте не знав, як можна ефективно знайти периметр цієї вертикальної ферми. Вертикальна ферма складається з глечиків з квітками. В одній точці можуть міститись кілька глечиків.
Допоможіть Петрику знайти периметр опуклої оболонки, яку утворює ця ферма.
Input
У першому рядку задано ціле число \(n\) — кількість глечиків з квітками.
У наступних \(n\) рядках задано по два цілих числа \(x_i\) та \(y_i\) — координати глечиків.
Output
В одному рядку виведіть дійсне число — периметр опуклої оболонки з абсолютною або відносною похибкою не більшою як \(10^{-7}\).
Якщо в опуклу оболонку входить лише одна точка — периметр буде рівний 0, якщо опукла оболонка є відрізком, то її периметром будемо вважати довжину відрізка.
Constraints
\(3 \le n \le 10^5\),
\(|x_i|, |y_i| \le 10^9\).
Samples
Input (stdin) | Output (stdout) |
---|---|
5 0 0 2 0 0 2 1 1 2 2 | 8.0000000 |
Notes
Опуклу оболонку будуть утворювати точки (0;0), (0;2), (2;0) та (2;2). Периметр опуклої оболонки буде рівний сумі довжин відрізків, які утворюють цю опуклу оболонку.
Element Type | Created | Who | Problem | Compiler | Result | Time (sec.) | Memory (MiB) | # | Actions |
---|