1S/512M
给定一个大小为 的字符矩阵,你需要依次执行 次操作。每次操作有两种类型:
1 l r k对第 行到第 行(包括两端)的每一行,进行如下处理:
将该行中的所有元素向右循环平移 次。
一次向右循环平移指的是每一行中最右侧的字符会移到最左侧,其余字符依次向右平移。
2 l r k对第 列到第 列(包括两端)的每一列,进行如下处理:
将该列中的所有元素向下循环平移 次。
一次向下循环平移指的是每一列中最下方的字符会移到最上方,其余字符依次向下平移。
请你在所有操作执行完成后,输出最终的字符矩阵。
第一行包含两个整数 和 ,表示矩阵的行数和列数。
接下来的 行,每行包含 个大写字母,表示初始矩阵。
第 行是一个整数 ,表示操作次数。
接下来的 行,每行描述一次操作,格式如下:
1 l r k:表示对第 行到第 行右移 次。
2 l r k:表示对第 列到第 列下移 次。
输出 行,每行 个字符,表示所有操作完成后的矩阵状态。
4 4
ABCD
EFGH
IJKL
MNOP
2
1 2 3 2
2 1 3 5
MNOD
ABCF
GHEJ
KLIP
对于第一个操作,需要将第 行和第 行的元素向右循环移位 次
E F G H → G H E FI J K L → K L I J更新后矩阵:
ABCD
GHEF
KLIJ
MNOP
对于第二个操作,需要将前 列的元素向下循环移位 次。
A G K M → M A G KB H L N → N B H LC E I O → O C E I更新后的矩阵为:
MNOD
ABCF
GHEJ
KLIP
对于 的数据,。
对于 的数据,, ,,且字符矩阵内仅包含大写字母。