#P7252. [2019年雅礼]sort
[2019年雅礼]sort
Sort
时间限制: 1s
空间限制: 512M
Description
对于一个 到 的排列 ,你可以进行若干次如下操作:
- 选择若干对位置,满足每个位置最多在一个位置对中,然后对每一对位置,交换这两个位置上元素的值。
设 为将 排成升序所需的最少操作数, 为以最小操作数将 排成升序的方案数。两种方案被认为是不同的,当且仅当对于某次操作,存在一个位置 ,在两种方案中与 处于同一个位置对的另一个位置不同;或者 在一种方案中存在于一个位置对中,而在另一个方案中非然。
现在给出一个不完整的排列 ,其中有 个元素未知。你需要对于 种可能的排列 ,算出这些排列 的和以及 的和。由于 的和可能很大,你只需输出对 取模的结果。
Input
第一行两个整数 。
第二行 个整数,表示排列 ,其中有 个整数为 ,表示这个位置上的值未知。
Output
第一行一个整数,表示所有可能的排列的 的和。
第二行一个整数,表示所有可能的排列的 的和对 取模的结果。
Sample
Input
5 2
1 0 2 4 0
Output
3
7
Explanation
对于排列 , ;
对于排列 , 。
Subtasks
对所有数据,保证 $1 \leq n \leq 10^5, 0 \leq k \leq \min\{12, n\}, 0 \leq A_i \leq n$。
- Subtask1 (18%):;
- Subtask2–5 (45%):,且存在某个非负整数 ,满足 。其中:
- Subtask2 (3%):;
- Subtask3 (8%): 互质;
- Subtask4 (13%): 为偶数;
- Subtask5 (21%):没有额外的约束;
- Subtask6 (11%):;
- Subtask7 (17%):;
- Subtask8 (9%):没有特殊的约束。