atcoder#ARC153B. [ARC153B] Grid Rotations

[ARC153B] Grid Rotations

题目描述

H H 行,横 W W 列のグリッドがあります.はじめ,上から i i 行目,左から j j 列目のマスには英小文字 Ai,j A_{i,j} が書かれています.

このグリッドに対して Q Q 回の操作を行います.i i 回目の操作では,1 ai  H1 1\leq\ a_i\ \leq\ H-1 , 1 bi W1 1\leq\ b_i\leq\ W-1 を満たす整数 ai, bi a_i,\ b_i が与えられ,次を行います.

  • グリッド内の長方形領域 R1, R2, R3, R4 R_1,\ R_2,\ R_3,\ R_4 を次で定める:
    • 上から ai a_i 行,左から bi b_i 列の部分を R1 R_1 とする.
    • 上から ai a_i 行,右から Wbi W-b_i 列の部分を R2 R_2 とする.
    • 下から Hai H-a_i 行,左から bi b_i 列の部分を R3 R_3 とする.
    • 下から Hai H-a_i 行,右から Wbi W-b_i 列の部分を R4 R_4 とする.
  • R1, R2, R3, R4 R_1,\ R_2,\ R_3,\ R_4 のそれぞれを 180 180 度回転する.

ただし,グリッド内の長方形領域 R R 180 180 度回転とは,R R において上から i i 番目,左から j j 番目のマスに書かれた文字を,R R において 下から i i 番目,右から j j 番目のマスに移すことをいいます.入出力例の図も参考にしてください.

Q Q 回すべての操作を行ったとき,操作後のグリッドの状態を出力してください.

输入格式

入力は以下の形式で標準入力から与えられます.

H H W W A1,1 A1, W A_{1,1}\cdots\ A_{1,\ W} \vdots AH,1 AH, W A_{H,1}\cdots\ A_{H,\ W} Q Q a1 a_1 b1 b_1 \vdots aQ a_Q bQ b_Q

输出格式

操作後のマス (i,j) (i,j) に書かれている文字を Bi,j B_{i,j} とするとき,操作後のグリッドの状態を,次の形式で出力してください.

B1,1 B1, W B_{1,1}\cdots\ B_{1,\ W} \vdots BH,1 BH, W B_{H,1}\cdots\ B_{H,\ W}

题目大意

有一个 HHWW 列的矩阵,矩阵中每个位置都有一个小写字母。每次操作给出 a,ba,b,含义是在第 a,a+1a,a+1 行之间切一刀,再在 b,b+1b,b+1 列之间切一刀,这样能得到四个矩阵;每个矩阵旋转半周,最后把四个矩阵拼起来得到新矩阵。

nn 次操作,每次形如 ai,bia_i,b_i,希望输出操作后的矩阵。

4 5
abcde
fghij
klmno
pqrst
1
3 3
mlkon
hgfji
cbaed
rqpts
3 7
atcoder
regular
contest
2
1 1
2 5
testcon
oderatc
ularreg
2 2
ac
wa
3
1 1
1 1
1 1
ac
wa

提示

制約

  • 2 H, W 2\leq\ H,\ W かつ HW  5× 105 HW\ \leq\ 5\times\ 10^5
  • Ai,j A_{i,j} は英小文字
  • 1 Q 2× 105 1\leq\ Q\leq\ 2\times\ 10^5
  • 1 ai H  1 1\leq\ a_i\leq\ H\ -\ 1
  • 1 bi W  1 1\leq\ b_i\leq\ W\ -\ 1

Sample Explanation 1

グリッドの状態は次の図のように変化します. ![](https://img.atcoder.jp/arc153/5503f0a5f92e488238556b943aa1d6b7.png)

Sample Explanation 2

グリッドの状態は次の図のように変化します. ![](https://img.atcoder.jp/arc153/353f0b30a9561e38967fb3aedf5767c5.png)

Sample Explanation 3

グリッドの状態は次の図のように変化します. ![](https://img.atcoder.jp/arc153/655a0ac98f0625e806f6abc97853a437.png)