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 翻译