atcoder#ARC153B. [ARC153B] Grid Rotations

[ARC153B] Grid Rotations

配点 : 500500

問題文

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

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

  • グリッド内の長方形領域 R1,R2,R3,R4R_1, R_2, R_3, R_4 を次で定める:- 上から aia_i 行,左から bib_i 列の部分を R1R_1 とする.
    • 上から aia_i 行,右から WbiW-b_i 列の部分を R2R_2 とする.
    • 下から HaiH-a_i 行,左から bib_i 列の部分を R3R_3 とする.
    • 下から HaiH-a_i 行,右から WbiW-b_i 列の部分を R4R_4 とする.
  • 上から aia_i 行,左から bib_i 列の部分を R1R_1 とする.
  • 上から aia_i 行,右から WbiW-b_i 列の部分を R2R_2 とする.
  • 下から HaiH-a_i 行,左から bib_i 列の部分を R3R_3 とする.
  • 下から HaiH-a_i 行,右から WbiW-b_i 列の部分を R4R_4 とする.
  • R1,R2,R3,R4R_1, R_2, R_3, R_4 のそれぞれを 180180 度回転する.

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

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

制約

  • 2H,W2\leq H, W かつ HW5×105HW \leq 5\times 10^5
  • Ai,jA_{i,j} は英小文字
  • 1Q2×1051\leq Q\leq 2\times 10^5
  • 1aiH11\leq a_i\leq H - 1
  • 1biW11\leq b_i\leq W - 1

入力

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

HH WW

A1,1A1,WA_{1,1}\cdots A_{1, W}

\vdots

AH,1AH,WA_{H,1}\cdots A_{H, W}

QQ

a1a_1 b1b_1

\vdots

aQa_Q bQb_Q

出力

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

B1,1B1,WB_{1,1}\cdots B_{1, W}

\vdots

BH,1BH,WB_{H,1}\cdots B_{H, W}

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

グリッドの状態は次の図のように変化します.