CF1510K King's Task
题目描述
勇敢的骑士来到国王面前,请求允许他娶公主。国王知道骑士很勇敢,但他也想知道骑士是否足够聪明。因此,他让骑士解决如下问题。
给定一个 $p_i$,它是 $1$ 到 $2n$ 的一个排列。你可以进行两种操作:
1. 交换 $p_1$ 和 $p_2$,$p_3$ 和 $p_4$,……,$p_{2n-1}$ 和 $p_{2n}$。
2. 交换 $p_1$ 和 $p_{n+1}$,$p_2$ 和 $p_{n+2}$,……,$p_n$ 和 $p_{2n}$。
你的任务是求出将给定排列变为升序排列所需的最小操作次数。
其实骑士并不那么聪明,但他非常有魅力,所以公主请求你帮他解决国王的难题。
输入格式
第一行包含一个整数 $n$($1\le n\le 1000$)。
第二行包含 $2n$ 个整数 $p_i$,表示 $1$ 到 $2n$ 的一个排列。
输出格式
输出一个整数,表示将排列变为升序排列所需的最小操作次数。如果无法通过上述操作使排列有序,输出 $-1$。
说明/提示
在第一个样例中,你可以通过三次操作将排列变为升序:
1. 执行操作 1:$3, 6, 5, 2, 1, 4$。
2. 执行操作 2:$2, 1, 4, 3, 6, 5$。
3. 执行操作 1:$1, 2, 3, 4, 5, 6$。
由 ChatGPT 4.1 翻译