1859. 排列的排名

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

求一个给定排列的排名,可以用康托展开,具体步骤如下:

  1. 设初始排名为 1
  2. 对排列 p 的第 i 个元素 p_i ,找到有多少个整数 x 满足 x\in[1,p_i],且 x 未在 p_1,p_2,\cdots, p_i 出现过,设共有 c_i 个数字满足条件,则对排名增加 c_i\times (n-i)!

给定一个排列 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

登录以提交代码。
单点时限 1 秒
内存限制 128 MB
提交 482
通过 281