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

Внутренние точки решётчатого многоугольника

Внутренние точки решётчатого многоугольника

\textbf{Внутренние точки} это точки с \textbf{целочисленными} координатами. \textbf{Решётчатый многоугольник} это многоугольник с вершинами в точках с целочисленными координатами. \includegraphics{https://static.e-olymp.com/content/32/321d268929319ac596de9f0a0cf7af440818e8ae.jpg} Точки с целочисленными координатами на границе многоугольника являются \textbf{граничными точками} (показаны не закрашенными точками на рисунке выше), а \textbf{внутренние точки} находятся внутри многоугольника и также имеют целочисленные координаты (показаны закрашенными точками на рисунке выше). Многоугольник называется выпуклым если любой его отрезок находится либо на его границе либо внутри многоугольника. Это утверждение равносильно тому, что любой внутренний угол многоугольника меньше \textbf{180} градусов. Обратите внимание, что любой отрезок между двумя внутренними точками всегда находится внутри многоугольника, но не на его границе. Внутренние точки выпуклого многоугольника решетки на любой горизонтальной линии образуют единый сегмент от левой крайней точки до крайней правой точки (которые могут совпадать). Обратите внимание, что может быть никаких внутренних точек (А), либо только одна внутрення точка (B), либо изолированные внутренние точки (C), как это показано на рисунках ниже. \includegraphics{https://static.e-olymp.com/content/6f/6ff95dd4082d6f8378679f6cf93dd9a9705e08ce.jpg} Напишите программу, которая читает вершины выпуклого многоугольника решетки в стандартном порядке и выводит перечень его внутренних точек в виде списка горизонтальных отрезков. Вершины многоугольника решетки находятся в стандартном порядке, если: a) Первая вершина имеет наибольшее значение координаты \textbf{y}. Если две вершины имеют одинаковое значение \textbf{y}, то вершина с меньшим значением координаты \textbf{x} указывается в первую очередь. b) Вершины заданы по часовой стрелке вокруг многоугольника. \InputFile Первая строка входного файла содержит одно целое число \textbf{P} (\textbf{1} ≤ \textbf{P} ≤ \textbf{1000}) , которое указывает количество последующих наборов тестовых данных. В первой строке каждого набора данных содержится номер тестового примера, а далее через пробел указано количество вершин \textbf{N} (\textbf{3} ≤ \textbf{N} ≤ \textbf{50}) многоугольника. Остальные строки в каждом наборе данных содержат вершины, по одной на строку в стандартном порядке. Каждая строка содержит сначала координату \textbf{х}, а затем координату \textbf{у}. Все координаты целые числа. \OutputFile Для каждого набора данных вывести несколько строк. В первой строке вывести десятичное целое число - номер тестового набора данных, а далее через пробел десятичное целое - число горизонтальных строк, которые содержат внутренние точки (оно может быть равно нулю (\textbf{0}) или более). Строки внутренних точек, если таковые имеются, следуют по одной в строке в порядке убывания значения \textbf{у}. Каждая строка содержит сначала десятичное целое число - \textbf{у-}координату строки точек, а далее через пробел сначала десятичное целое число \textbf{х-}координаты самой левой точки в этой строке, а затем \textbf{х}-координату самой правой точки в этой же строке.
Лимит времени 1 секунда
Лимит использования памяти 64 MiB
Входные данные #1
1
1 8
5 10
8 9
11 6
10 2
6 0
1 1
0 4
2 8
Выходные данные #1
1 9
9 4 7
8 3 8
7 2 9
6 2 10
5 1 10
4 1 10
3 1 10
2 1 9
1 2 7