#L2755. 「CCO 2017」移动数组
「CCO 2017」移动数组
题目描述
译自 CCO 2017 Day2 「Shifty Grid」
给你一个 的二维数组。只能通过移动 (Shift) 操作来改动这个数组:
- 将一行元素向左或向右移动若干单位
- 将一列元素向上或向下移动若干单位
越界的元素会移动到该行或列的另一侧(循环移动)。
举个例子:
将第二列向下移动 个单位(或向上移动 个单位),二维数组将会变成这样:

一次移动 个单位的左移操作等价于移动 个单位的右移操作(对列同理)。因此,我们规定只有下移和右移操作。
数组中所有数各不相同,且 (第 行 列的数编号为 )。
和谐数组的定义:第一行元素为 到 ,第二行元素为 到 ,以此类推。
你的任务是找到一系列操作,使二维数组变成和谐数组。
输入格式
第一行为两个整数 ;
下面 行每行包含 个正整数,代表二维数组。
输出格式
第一行输出移动步数 ;
下面 行输出操作:
1 i r:第 行右移 格2 j d:第 列下移 格
样例 1
输入
2 4
4 2 3 0
1 5 6 7
输出
2
2 1 1
1 1 1
经过一下变换:

样例 2
输入
4 2
2 3
5 0
4 1
6 7
输出
7
1 1 1
2 1 1
1 2 1
1 3 1
2 1 2
1 1 1
2 1 1
经以下变换:

数据范围与提示
- 永远为偶数
数据规模:
- 对于 的数据,
- 对于另外 的数据,
- 对于 的数据,