eolymp
bolt
Try our new interface for solving problems
Məsələlər

Разбиения множества

Разбиения множества

Рассмотрим множество, состоящее из первых \textbf{n} натуральных чисел: \textbf{N_n} = \{\textbf{1}, \textbf{2}, ..., \textbf{n}\}. \textit{Разбиение} - это представление этого множества в виде объединения одного или нескольких непустых множеств. Примерами разбиений для \textbf{n}=\textbf{5} являются: \{1, 2, 3, 4, 5\} = \{1, 2, 3\} U \{4, 5\} \{1, 2, 3, 4, 5\} = \{1, 3, 5\} U \{2, 4\} \{1, 2, 3, 4, 5\} = \{1, 2, 3, 4, 5\} \{1, 2, 3, 4, 5\} = \{1\} U \{2\} U \{3\} U \{4\} U \{5\} Всего существует \textbf{52} разбиения множества \textbf{N_5}. Заметим, что разбиения, отличающиеся только порядком объединяемых множеств, не различаются. Разбиения множества \textbf{N_n} можно упорядочить \textit{лексикографически}. \includegraphics{https://static.e-olymp.com/content/cc/cc8a15c4c87b4c7e92efe076a394dd47b084fd99.jpg} \includegraphics{https://static.e-olymp.com/content/cc/cc8a15c4c87b4c7e92efe076a394dd47b084fd99.jpg} Для того, чтобы определить этот порядок, вначале определим лексикографический порядок на подмножествах \textbf{N_n}. Будем говорить, что множество \textbf{A} \textbf{N_n} лексикографически меньше множества \textbf{B} \textbf{N_n} и писать \textbf{A} < \textbf{B}, если верно одно из следующих утверждений: \begin{itemize} \item найдется \textbf{i}, такое что \textbf{i} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{A}, \textbf{i} \includegraphics{https://static.e-olymp.com/content/97/970fb3450de3b7b3d852f20e523df2d748f3f66c.jpg} \textbf{B}, для всех \textbf{j} < \textbf{i}: \textbf{j} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{A} iff \textbf{j} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{B}, и найдется \textbf{k} > \textbf{i}, такое что \textbf{k} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{B}; \item \textbf{A} \includegraphics{https://static.e-olymp.com/content/cc/cc8a15c4c87b4c7e92efe076a394dd47b084fd99.jpg} \textbf{B} и \textbf{i} < \textbf{j} для всех \textbf{i} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{A} и \textbf{j} \includegraphics{https://static.e-olymp.com/content/a0/a01d6fe5baf86fd274dfc5600a30f76cc672dd3c.jpg} \textbf{B} \ \textbf{A}. \end{itemize} Очевидно, что введенное отношение является полным порядком на подмножествах множества \textbf{N_n}. Теперь определим \textit{каноническое представление} разбиения, как представлние, в котором объединяемые множества упорядочены лексикографически. Разбиения упорядочиваются лексикографически следующим образом. Разбиение \textbf{N_n} = \textbf{A_1} U \textbf{A_2} U \textbf{...} U \textbf{A_k }лексикографически меньше разбиения \textbf{N_n} = \textbf{B_1} U \textbf{B_2} U \textbf{...} U \textbf{B_l}, если существует такое \textbf{i}, что \textbf{A_1} = \textbf{B_1}, \textbf{A_2} = \textbf{B_2}, ..., \textbf{A_\{i-1\}} = \textbf{B_\{i-1\}} и \textbf{A_i} < \textbf{B_i}. По разбиению множества \textbf{N_n} найдите следующее в лексикографическом порядке разбиение. \InputFile Входной файл содержит несколько описаний тестов. Каждое описание является каноническим представлением разбиения. Первая строка описания содержит \textbf{n} и \textbf{k} --- количество элементов в разбиваемом множестве и количество частей в разбиении (\textbf{1} ≤ \textbf{n} ≤ \textbf{200}). Последующие \textbf{k} строк содержат элементы разбиения. Элементы каждого множества упорядочены по возрастанию. Описания тестов отделены друг от друга пустыми строками. Последняя строка входного файла содержит два нуля. Этот тест не должен обрабатываться. Сумма \textbf{n} по всем описаниям не превосходит \textbf{2000}. \OutputFile Для каждого теста выведите следующее в лексикографическом порядке разбиение. Если разбиение во входном файле является последним в лексигорафическом порядке, выведите первое в лексикографическом порядке. Используйте тот же формат, что и во входном файле. Отделяйте разбиения друг от друга пустыми строками.
Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri #1
5 2
1 2 3
4 5

5 2
1 3 5
2 4

5 1
1 2 3 4 5

5 5
1
2
3
4
5

0 0
Çıxış verilənləri #1
5 2
1 2 3 4
5

5 4
1 4
2
3
5

5 2
1 2 3 5
4

5 4
1
2
3
4 5