C. 排在第几位

内存限制:256 MiB 时间限制:1000 ms 输入文件: djw.in 输出文件: djw.out
题目类型:传统 评测方式:文本比较

题目描述

给定 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

满分提示:康托展开、多重集排列