#aBC336F. [ABC336F] Rotation Puzzle
[ABC336F] Rotation Puzzle
AT_abc336_f [ABC336F] Rotation Puzzle
题目描述
有一个 行 列的网格,最初每个格子中恰好写有一个 到 之间的整数,且每个整数只出现一次。
具体来说,对于 ,,从上到下第 行、从左到右第 列的格子中写有 。
下面,将从上到下第 行、从左到右第 列的格子称为格子 。
你可以重复进行如下操作,最多 次(也可以不进行操作):
对于任意整数对 (),判断能否通过操作使得格子 中写有 ,
如果可以,请输出所需的最小操作次数。
如果 次以内无法达成(包括无论操作多少次都无法达成的情况),请输出 。
操作:从网格中选择一个 的矩形区域,将其旋转 度。
更严格地说,选择整数 (), 对于所有满足 , 的整数对 ,同时将格子 中的整数与格子 中的整数交换。
注意,只要格子中写有的整数满足条件即可,不需要考虑写入的方向等其它因素。
输入格式
输入按以下格式从标准输入读入。
输出格式
输出满足题目条件所需的最小操作次数。
如果无法在 次以内达成条件,则输出 。
输入输出样例 #1
输入 #1
3 3
9 4 3
2 1 8
7 6 5
输出 #1
2
输入输出样例 #2
输入 #2
4 6
15 18 1 14 3 4
23 24 19 8 9 12
13 2 17 6 5 16
21 22 7 20 11 10
输出 #2
-1
输入输出样例 #3
输入 #3
4 6
1 4 13 16 15 18
21 20 9 12 23 10
17 14 5 6 3 2
11 22 7 24 19 8
输出 #3
20
输入输出样例 #4
输入 #4
4 3
1 2 3
4 5 6
7 8 9
10 11 12
输出 #4
0
说明/提示
限制条件
- 若 ,则
- 输入均为整数
样例解释 1
按照如下顺序进行操作,可以在 次操作内满足题目条件:
- 选择左上角的矩形区域进行操作,即选择 ,。
- 选择右下角的矩形区域进行操作,即选择 ,。 而无法在 次或更少操作内达成条件,因此输出 。

样例解释 2
无法在 次以内达成条件,因此输出 。
由 ChatGPT 4.1 翻译