— Над чем задумался?
— Никак не могу придумать хороший генератор локаций для своего уровня.
Уровень один из первых, поэтому хочется чего-то простого. Пока что есть только карта
в виде выпуклого многоугольника. Нужно разместить на ней двух игроков и какие-нибудь
препятствия так, чтобы игроки оказались разделёнными ими. Но
препятствий не должно быть много — локация может выйти неудобной для игры.
— Зафиксируй некоторую вершину A своего многоугольника.
Если после этого ты выберешь случайным образом точки B и C строго внутри многоугольника, ты получишь треугольник ABC (возможно, вырожденный).
Сделай этот треугольник непроходимым, а игроков
поставь рядом с точкой A по разные стороны от
треугольника.
— А не будет ли такая непроходимая зона слишком большой?
Ведь у игроков должно остаться свободное пространство для манёвров.
— Да вроде нет. Кажется, в среднем её площадь достаточно невелика по
сравнению с площадью всей карты. Давай прикинем, чему она равна.
Исходные данные
В первой строке дано единственное целое число n (3 ≤ n ≤ 1000) — количество вершин
многоугольника, образующего карту игровой локации. В i-й из следующих n строк
записаны целые числа xi и yi (−106 ≤ xi, yi ≤ 106) — координаты i-й вершины многоугольника
в порядке обхода против часовой стрелки. Никакие три вершины
многоугольника не лежат на одной прямой.
Зафиксированная вершина многоугольника описана первой.
Результат
Выведите среднюю площадь непроходимой зоны, построенной по
предложенному методу, если выбор двух вершин треугольника осуществляется
равномерно из внутренности многоугольника.
Абсолютная или относительная погрешность ответа не должна превосходить 10−6.
Пример
исходные данные | результат |
---|
4
0 0
1 0
1 1
0 1
| 0.120370370
|
Автор задачи: Денис Дублённых
Источник задачи: XVII Открытый чемпионат Урала по спортивному программированию (май, 2013)