100 atcoder#ABC109D. [ABC109D] Make Them Even

[ABC109D] Make Them Even

配点 : 400400

問題文

HH 行横 WW 列に区切られたマス目があり、上から ii 番目、左から jj 列目のマスをマス (i,j)(i, j) と呼びます。

マス (i,j)(i, j) には aija_{ij} 枚のコインが置かれています。

あなたは以下の操作を何度でも行うことができます。

操作: まだ選んだことのないマスのうち 11 枚以上のコインが置かれているマスを 11 つ選び、そのマスに置かれているコインのうち 11 枚を上下左右に隣接するいずれかのマスに移動する

偶数枚のコインが置かれたマスの数を最大化してください。

制約

  • 入力はすべて整数である
  • 1H,W5001 \leq H, W \leq 500
  • 0aij90 \leq a_{ij} \leq 9

入力

入力は以下の形式で標準入力から与えられる。

HH WW

a11a_{11} a12a_{12} ...... a1Wa_{1W}

a21a_{21} a22a_{22} ...... a2Wa_{2W}

::

aH1a_{H1} aH2a_{H2} ...... aHWa_{HW}

出力

偶数枚のコインが置かれたマスの数が最大となるような操作の列を次の形式で出力せよ。

NN

y1y_1 x1x_1 y1y_1' x1x_1'

y2y_2 x2x_2 y2y_2' x2x_2'

::

yNy_N xNx_N yNy_N' xNx_N'

すなわち、11 行目には操作の回数を表す 00 以上 H×WH \times W 以下の整数 NN を出力せよ。

i+1i+1 (1iN1 \leq i \leq N) 行目には ii 回目の操作を表す整数 yi,xi,yi,xiy_i, x_i, y_i', x_i' (1yi,yiH1 \leq y_i, y_i' \leq H かつ 1xi,xiW1 \leq x_i, x_i' \leq W) を出力せよ。 ただし、これはマス (yi,xi)(y_i, x_i) にあるコインのうち 11 枚を上下左右に隣接するマス (yi,xi)(y_i', x_i') に移動させる操作を表す。

問題文中の操作でないような操作が与えられた場合や、出力の形式が正しくない場合には Wrong Answer となるので注意せよ。

2 3
1 2 3
0 1 1
3
2 2 2 3
1 1 1 2
1 3 1 2

次のように操作を行えば、全てのマスに置かれたコインの数を偶数にできます。

  • マス (2,2)(2, 2) に置かれているコインのうち 11 枚をマス (2,3)(2, 3) に移動します
  • マス (1,1)(1, 1) に置かれているコインのうち 11 枚をマス (1,2)(1, 2) に移動します
  • マス (1,3)(1, 3) に置かれているコインのうち 11 枚をマス (1,2)(1, 2) に移動します
3 2
1 0
2 1
1 0
3
1 1 1 2
1 2 2 2
3 1 3 2
1 5
9 9 9 9 9
2
1 1 1 2
1 3 1 4