競プロキャンプ2026関西
コンテスト日時
2026/10/17 (Sa) 15:30 - 17:30

D - Flowers

Benihuki
2
s
1024
MB
100
点

問題文

$H$ 行 $W$ 列のマス目があります。上から $i$ 行目、左から $j$ 列目のマスを $(i,j)$ と呼びます。

このマス目における 花 とは、あるマス $(x, y)$ を中心とする次の $5$ マスの集合です。

  • $(x, y)$
  • $(x-1, y)$
  • $(x+1, y)$
  • $(x, y-1)$
  • $(x, y+1)$

言い換えると、花は次の形をしています。

.#.
###
.#.

マス目の状態が $H$ 個の長さ $W$ の文字列 $S_1,S_2,\ldots,S_H$ として与えられます。
$S_i$ の $j$ 文字目が # のときマス $(i,j)$ は花を構成するマスであり、. のときそうではありません。
また、このマス目は、マス目からはみ出さず、互いに共通のマスを持たないようにいくつかの花を配置することで作られたことが保証されます。

すべての花の中心を求めてください。

制約

  • $3 \leq H,W \leq 1{,}000$
  • $S_i$ は . と # からなる長さ $W$ の文字列
  • # のマスが少なくとも $1$ つ存在する
  • 入力で与えられるマス目は、問題文中の条件を満たすように花を配置することで作られたものである

入力

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

$H$ $W$
$S_1$
$S_2$
$\vdots$
$S_H$

出力

解に含まれる花の個数を $K$ として $K+1$ 行出力せよ。

$1 \le i \le K$ について $i$ 番目の花の中心座標を $(x_i, y_i)$ として以下の形式で出力せよ。

$K$
$x_1$ $y_1$
$x_2$ $y_2$
$\vdots$
$x_K$ $y_K$

条件を満たす座標の列が複数存在する場合には、そのうちどれを出力しても正答とみなされる。

入力例 1
4 5 .#... ####. .#### ...#.
出力例 1
2 2 2 3 4

$(2, 2)$ および $(3, 4)$ を中心とする $2$ つの花を盤面に描くと、これらは互いに重ならず、盤面をはみ出しません。
また、花の占める領域は入力で与えられた盤面と一致するためこの出力は問題文の条件を満たします。

入力例 2
7 7 .....#. ...#### ..####. ...#.#. .#..### ###..#. .#.....
出力例 2
4 2 6 3 4 5 6 6 2
提出
C++23 (g++ 12.2.0)