eolymp
bolt
Try our new interface for solving problems
Problems

Триангуляция

Триангуляция

Дан многоугольник из \textbf{N} вершин. Он не содержит самопересечений и самокасаний. Требуется произвести его триангуляцию, то есть, разбить его ровно на \textbf{N-2} треугольника таким образом, что выполняется: \begin{itemize} \item вершины каждого треугольника выбираются среди вершин исходного многоугольника; \item каждый треугольник должен быть невырожденным; \item каждый треугольник должен полностью содержаться в исходном многоугольнике; \item внутренние области любых двух треугольников не пересекаются. \end{itemize} \InputFile Первая строка содержит число \textbf{N} (\textbf{3} ≤ \textbf{N} ≤ \textbf{5000}) --- количество вершин многоугольника. Далее \textbf{N} строк по два целых числа в каждой: \textbf{x_i}, \textbf{y_i} (\textbf{-10000} ≤ \textbf{x_i}, \textbf{y}_\{i \}≤ \textbf{10000}) --- координаты вершин многоугольника в порядке обхода против часовой стрелки. Гарантируется, что все точки различные. Гарантируется, что любая пара сторон имеет ровно одну общую точку, если стороны соседние, и ни одной в противном случае. \OutputFile \textbf{N-2} строки, каждая из которых содержит три различных целых числа: \textbf{a_i}, \textbf{b_i} и \textbf{c_i} (\textbf{1} ≤ \textbf{a_i}, \textbf{b_i}, \textbf{c}_\{i \}≤ \textbf{N}) --- номера вершин исходного многоугольника, которые формируют \textbf{i}-ый треугольник. Вершины исходного многоугольника нумеруются начиная с \textbf{1} в порядке появления во входных данных. Если вариантов триангуляции несколько, можно вывести любой. Треугольники можно выводить в любом порядке. Номера вершин треугольников можно выводить в любом порядке.
Time limit 2 seconds
Memory limit 256 MiB
Input example #1
7
3 -1
3 1
2 1
3 3
0 0
3 -3
2 -1
Output example #1
1 2 3
3 4 5
5 6 7
7 1 3
3 5 7
Author Александр Миланин
Source Летняя школа Севастополь 2013, Волна 2, День 3