Məsələlər
Последовательность триангуляции
Последовательность триангуляции
\textit{Триангуляцией }многоугольника называется проведение набора отрезков между его вершинами таким образом, чтобы разбить многоугольник на треугольники. Отрезки должны лежать внутри многоугольника, не пересекаться между собой, и касаться сторон многоугольника только в вершинах. Например:
\includegraphics{https://static.e-olymp.com/content/86/866d54d9171ba16de4eac726851303285f906fb4.jpg}
В примере жирной линией показаны границы многоугольника, а тонкой приведены триангуляции. При каждой триангуляции многоугольника с \textbf{n} вершинами получается \textbf{(n-2)} треугольника.
\textit{Треугольная последовательность }триангуляции получается, если начав с некоторой вершины, и двигаясь вокруг многоугольника последовательно по его вершинам, записывать количество инцидентных им треугольников. Для выше приведенного примера такими последовательностями будут (начиная сверху, слева):
\textbf{A: 1 3 1 3 1 3}
\textbf{B: 2 2 1 4 1 2}
\textbf{C: 1 2 3 2 1 6 1 2 3 2 1 6}
Напишите программу, которая по последовательности из \textbf{n }натуральных чисел определит, является ли она треугольной последовательностью триангуляции многоугольника из \textbf{n }вершин. Если ответ положительный, то следует вывести список треугольников в триангуляции в лексикографическом порядке.
\InputFile
Первая строка содержит количество тестов \textbf{p }(\textbf{1 }≤ \textbf{p }≤ \textbf{1000}).
Каждый тест состоит из одной строки, которая содержит номер теста \textbf{k}, количество чисел в последовательности \textbf{n} (\textbf{4} ≤ \textbf{n} ≤ \textbf{20}), а также сами \textbf{n }целых чисел последовательности в соответствующем порядке, разделенные пробелом.
\OutputFile
Для каждого теста вывести несколько строк. Если входная последовательность \textbf{НЕ} является \textit{треугольной} для \textbf{n}-угольника, то вывести номер теста \textbf{k}, пробел и заглавную букву \textbf{N}. Иначе в первой строке вывести номер теста \textbf{k}, пробел и заглавную букву \textbf{Y}. Далее вывести \textbf{n - 2} строки, содержащих индексы вершин треугольников в триангуляции, по одному треугольнику в строке, индексы вершин выводить в возрастающем порядке. Треугольники сначала следует отсортировать лексикографически. Если \textbf{k }< \textbf{l }< \textbf{m }- индексы вершин одного треугольника, а \textbf{r }< \textbf{s }< \textbf{t }- индексы вершин второго, то первый треугольник предшествует второму в лексикографическом порядке, если:
\textbf{k < r OR (k == r AND l < s) OR (k == r AND l == s AND m < t)}
Giriş verilənləri #1
4 1 6 1 3 1 3 1 3 2 6 1 3 2 2 1 3 3 12 1 2 3 2 1 6 1 2 3 2 1 6 4 20 1 2 3 2 1 6 1 2 3 2 1 6 1 3 2 2 1 3 1 2
Çıxış verilənləri #1
1 Y 1 2 6 2 3 4 2 4 6 4 5 6 2 N 3 Y 1 2 12 2 3 12 3 4 6 3 6 12 4 5 6 6 7 8 6 8 9 6 9 12 9 10 12 10 11 12 4 N