Да, мы не смогли придумать новогоднюю легенду для этой задачи.
Перестановка длины $$$n$$$ — это массив $$$n$$$ целых чисел, таких что каждое целое число от $$$1$$$ до $$$n$$$ появляется в нем ровно один раз.
Элемент $$$y$$$ перестановки $$$p$$$ достижим из элемента $$$x$$$, Если $$$x = y$$$, или $$$p_x = y$$$, или $$$p_{p_x} = y$$$ и так далее.
Определим декомпозицию перестановки $$$p$$$ следующим образом: сначала у нас есть перестановка $$$p$$$, все элементы которой не помечены, и пустой список $$$l$$$. Затем мы делаем следующее: пока хотя бы один элемент не помечен в $$$p$$$, находим самый левый такой элемент, перечисляем все элементы, которые достижимы из него в порядке их появления в $$$p$$$, помечаем все эти элементы, затем циклически сдвигаем список этих элементов так, чтобы максимум появился в первой позиции, и добавляем этот список как элемент в $$$l$$$. После того, как все элементы помечены, $$$l$$$ является результатом этой декомпозиции.
Например, если мы хотим построить декомпозицию $$$p = [5, 4, 2, 3, 1, 7, 8, 6]$$$, мы делаем следующее:
Определим новогоднее преобразование перестановки следующим образом: построим декомпозицию этой перестановки; затем отсортируем все списки в декомпозиции по возрастанию первых элементов (мы не меняем местами элементы в этих списках, только сами списки); затем объединим списки в один список, который становится новой перестановкой. Например, новогоднее преобразование $$$p = [5, 4, 2, 3, 1, 7, 8, 6]$$$ строится следующим образом:
Назовем перестановку хорошей, если результат ее преобразования совпадает с самой перестановкой. Например, $$$[4, 3, 1, 2, 8, 5, 6, 7]$$$ это хорошая перестановка; а $$$[5, 4, 2, 3, 1, 7, 8, 6]$$$ плохая, так как результатом преобразования является $$$[4, 2, 3, 5, 1, 8, 6, 7]$$$.
Ваша задача состоит в следующем: при заданных $$$n$$$ и $$$k$$$ найти $$$k$$$-ю (лексикографически) хорошую перестановку длины $$$n$$$.
Первая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 1000$$$) — количество наборов входных данных.
Каждый набор входных данных содержит два целых числа $$$n$$$ и $$$k$$$ ($$$1 \le n \le 50$$$, $$$1 \le k \le 10^{18}$$$).
Для каждого набора входных данных выведите ответ на него следующим образом: если число хороших перестановок длины $$$n$$$ меньше $$$k$$$, выведите одно целое число $$$-1$$$; в противном случае выведите $$$k$$$-ю (в лексикографическом порядке) хорошую перестановку из $$$n$$$ элементов.
5 3 3 5 15 4 13 6 8 4 2
2 1 3 3 1 2 5 4 -1 1 2 6 3 4 5 1 2 4 3
Название |
---|