给定 n 个整数 a_1,a_2,…,a_n ,整数之间可能重复。
将这 n 个整数可以构成的所有不同排列按照字典序从小到大的顺序排序。
现在,给定其中的一种排列,请你计算此排列在所有排列中排在第几位。
将结果对 m 取模后输出。
第一行包含两个整数 n,m 。
第二行包含 n 个整数 a_1,a_2,…,a_n 。
一个整数,表示给定排列的排名对 m 取模后的结果。
输入样例:
4 1000 2 1 10 2
输出样例:
5
样例解释
比给定排列靠前的有: (1,2,2,10),(1,2,10,2),(1,10,2,2),(2,1,2,10) 。
30 \% 数据: 1≤n≤5
80 \% 数据: 1≤n≤10
100 \% 数据: 1≤n≤3×10^5 , 2≤m≤10^9 , 1≤a_i≤3×10^5 。
满分提示:康托展开、多重集排列