Ограничение по времени: 3.000 секунд
Ограничение по памяти: 100.000 мегабайт
Члены экипажа обнаружили место преступления предателя. Теперь команда корабля хочет оградить это место преступления.
Место преступления выглядит как выпуклый многоугольник A. Команда корабля хочет оградить его другим выпуклым многоугольником B. Причем, у B должно быть минимальное возможное число вершин. И все вершины многоугольника A должны лежать на границе многоугольника B.
Помогите команде выбрать такой многоугольник B.
В первой строке дано одно целое число t - количество тестовых наборов (1 ≤ t ≤ 1000). Далее дано описание t тестовых наборов.
В первой строке тестового набора дано одно целое число n - количество вершин в многоугольнике A (3 ≤ n ≤ 100).
В следующих n строках даны по два целых числа xi и yi - координаты i-й вершины многоугольника (|xi|,|yi| ≤ 1000). Вершины многоугольника даны в порядке обхода против часовой стрелки. Гарантируется, что многоугольник является строго выпуклым. То есть, в том числе, никакие три его последовательные вершины не лежат на одной прямой.
Для каждого тестового набора сначала выведите одно целое число m - количество вершин в найденном многоугольнике B.
В следующих m строках выведите по два вещественных числа xi и yi - координаты i-й вершины многоугольника. Выводите вершины многоугольника в порядке обхода против часовой стрелки. Выведенный многоугольник должен быть строго выпуклым. А также, все вершины исходного многоугольника должны находиться на расстоянии не более 10−6 от границы выведенного многоугольника.
input | output |
---|---|
3 3 1 0 1 1 0 1 4 0 0 1 0 1 1 0 1 5 1 0 3 0 3 2 1 2 0 1 |
3 0.0 0.0 2.0 0.0 0.0 2.0 3 0.0 0.0 2.0 0.0 0.0 2.0 3 3.0 0.0 3.0 4.0 -1.0 0.0 |