CF765D Artsem and Saunders
题目描述
令 $ [n] $ 表示整数集 $ \{1,...,n\} $ ,令 $f:[x]\rightarrow[y]$ 表示函数 $f$ 的定义域为整数 $\{1,...,x\}$ 并且它的所有函数值在 $\{1,...,y\}$ 中。
现在,给定一个函数 $f:[x]\to[y]$ ,你的任务是找出一个正整数 $m$ ,和两个函数 $g:[n]\to[m]$、$h:[m]\to[n]$ ,满足对于任意 $x\in[m]$ ,有 $g(h(x))=x$ ;对于任意 $x\in[n]$ ,有 $h(g(x))=f(x)$ 。或者判定无解。
输入格式
第一行一个正整数 $n$ ,第二行 $n$ 个正整数,第 $i$ 个数表示 $f(i)$ 的值。
输出格式
如果无解,输出 $-1$ 。
否则,第一行输出 $m$ ,第二行输出 $n$ 个整数,第 $i$ 个数为 $g(i)$ ,第三行输出 $m$ 个整数,第 $i$ 个数为 $h(i)$ 。
如果有多组可行解,只需输出一组即可。
说明/提示
$1 \le n \le 10^5$,$1 \le m \le 10^6$,$1 \le f(i) \le n$。