luogu#P3832. [SHOI2012] 排序

[SHOI2012] 排序

题目背景

SHOI2012 D2T2

题目描述

众所周知,1~n 的全排列包含 n!个排列。通常情况下,我们在生成全排列时都按照他们的字典序生成的。而在本题中,我们就将要考虑一种特殊的全排列生成方式。

具体的,生成的全排列的顺序是由一个生成器决定的。

(1) 生成器本身也是一个 1~n 的排列:a1a_1 , a2a_2 , …, ana_n

(2) 对于两个不相同的 1~n 的 x1x_1 , x2x_2 , …, xnx_ny1y_1 , y2y_2 , …, yny_n 排列而言,首先找到最小的 i,使得 xaix_{ai}yaiy_{ai} 不相等。

(3) 根据(2)中选择的 i,如果 xaix_{ai} 在排列 a1a_1 , a2a_2 , …, ana_n 中排在 yaiy_{ai} 之前,那么 x1x_1 ,x2x_2 , …, xnx_n 就会在 y1y_1 , y2y_2 , …, yny_n 之前生成。

例如,当 n = 3,生成器为 132 时,1~n 的全排列的生成顺序为:123,132,321,312,231,213。

输入一个排列 x1x_1 , x2x_2, …, xnx_n ,问,哪个生成器能使得这个排列在所有的排列中尽可能早的生成,哪个生成器能使得这个排列在所有的排列中尽可能晚的生成。

如果有多种生成器能达到要求,那么请输出字典序最小的符合要求的生成器。

输入格式

输入的第一行是整数 n,第二行是 1~n 的一个排列 x1x_1 , x2x_2 , …, xnx_n

输出格式

输出的第一行是一个 1~n 的排列,表示让 x1x_1 , x2x_2 , …, xnx_n 尽早输出的生成器。

输出的第二行是一个 1~n 的排列,表示让 x1x_1 , x2x_2 , …, xnx_n 尽晚输出的生成器。

如果有多种生成器能达到要求,那么请输出字典序最小的符合要求的生成器。

3
1 3 2
1 2 3
2 1 3

提示

对于 30%的数据,有 n ≤ 10;

对于 50%的数据,有 n ≤ 200;

对于 90%的数据,有 n ≤ 30000;

对于 100%的数据,有 n ≤ 500000。