Serein 这天在研究全排列问题,对于 n 个数有 n! 个全排列,但古灵精怪的 Ustinian 问 Serein 能不能对这些排列排个名次。
于是 Serein 定义长为 n 的排列是一个有 n 元素的序列,且 [1,n] 内每个整数出现一次且仅一次,例如 [1,3,2],[2,1,3] 是两个长为 3 的排列。每个排列在所有同长排列里字典序排第几位,就是该排列的排名。 例如对于 n=3 时,按字典序列出所有的排列 [1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1],则 [2,3,1] 的排名为 4。
求一个给定排列的排名,可以用康托展开,具体步骤如下:
给定一个排列 p,请你求出它的排名。
输入
输入一行一个整数 n(1\le n\le12)。
接下来输入一行 i 个整数,第 i 个整数为 p_i(1\le p_i\le n)。保证 p 是排列。
输出
输出一行一个整数,代表 p 的排名。
样例
标准输入 复制文本 |
5 2 5 3 4 1 |
标准输出 复制文本 |
46 |
标准输入 复制文本 |
5 1 2 3 4 5 |
标准输出 复制文本 |
1 |
标准输入 复制文本 |
3 3 2 1 |
标准输出 复制文本 |
6 |
提示
对于样例1,对 i=1,只有 x=1 满足,则 c_1=1,故增加 1\times 4!;对 i=2,有 x=1,3,4 满足,则 c_2=3,故增加 3\times 3!;对 i=3,有 x=1 满足,则 c_3=1,故增加 1\times2!;对 i=4,也有 x=1 满足,则 c_4=1,增加 1\times 1!;对 i=5,没有满足的,即 c_5=0,增加 0\times0!。故排名为 1+4!+3\times 3!+2!+1!=46。