CF501D Misha and Permutations Summation

题目描述

现在有两个 $n$ 的排列是由 $0,1,2,\ldots,n−1$ 这 $n$ 个数字组成的。对于一个排列 $p$,$Ord(p)$ 表示 $p$ 是字典序第 $Ord(p)$ 小的排列(从 0 开始计数)。对于小于 $n!$ 的非负数 $x$ , $Perm(x)$ 表示字典序第 $x$ 小的排列。 现在,求两个排列的和。两个排列 $p$ 和 $q$ 的和为 $Perm((Ord(p)+Ord(q))\mod n!)$.

输入格式

输入文件第一行一个数字 $n$,含义如题。 接下来两行,每行 $n$ 个用空格隔开的数字,表示两个排列。

输出格式

输出一行 $n$ 个数字,用空格隔开,表示两个排列的和。

说明/提示

0 到 1 的排列的字典序排列:$(0,1),(1,0)$。 第一个样例 $Ord(p)=0$ 且 $Ord(q)=0$,所以答案是 $Perm((0+0)\mod 2)=Perm(0)=(0,1)$。 第二个样例 $Ord(p)=0$ 且 $Ord(q)=1$,所以答案是 $Perm((0+1)\mod 2)=Perm(1)=(1,0)$。 0 到 2 的排列的字典序排列:$(0,1,2),(0,2,1),(1,0,2),(1,2,0),(2,0,1),(2,1,0)$。 第三个样例 $Ord(p)=3$ 且 $Ord(q)=5$,所以答案是 $Perm((3+5)\mod 6)=Perm(2)=(1,0,2)$。