#685. 【NFLSPC #3】排列

题目类型:传统型 时间限制:1000 ms 空间限制:512 MiB
输入文件:标准输入 输出文件:标准输出 答案检查器:文本比较

题目描述

给定一个长度为 $n$ 的排列,现在你可以进行一些操作,每一次操作形如:选取两个数,交换这两个数在排列中的位置。求将这个排列变成 $[1,2,3,...,n]$ 所需要的最少的操作次数。

你不仅要求出最少的操作次数,还要求出有多少种操作的方案使得能在最少的操作次数内将排列变成 $[1,2,3,...,n]$,两个方案不相同当且仅当存在一个数 $x$,使得第 $x$ 次操作中两种方案交换的数不相同。方案数需要对 $998244353$ 取模。

输入格式

第一行一个正整数 $n$,表示排列的长度。

接下来一行 $n$ 个正整数 $p_1...p_n$,表示原来的排列。

输出格式

输出两个数 $a,b$,分别表示将原排列变成 $[1...n]$ 所需要的最少步数和方案数。

样例输入 1

4
2 1 4 3

样例输出 1

2 2

数据范围

$\text{subtask1(20pts)}:n \leq 5$

$\text{subtask2(30pts)}:n \leq 1000$

$\text{subtask3(50pts)}:n \leq 10^5$


$by~~lqs2015$