No.38 気象予報士 (Weather Forecaster)


時間制限:$2.0sec$ / メモリ制限:$256MB$

問題文

JOI 市は南北方向に H キロメートル,東西方向に W キロメートルの長方形の形をしており,H × W 個の 1 キロメートル四方の小区画に区切られている.北から i 番目,西から j 番目の小区画を (i, j) と表す.

各小区画は上空に雲があるか雲がないかのどちらかである.すべての雲は,1 分経つごとに 1 キロメートル東に移動する.今日は実に天気が良いため,JOI 市の外から JOI 市内に雲が移動してくることはない.

今,各小区画の上空に雲があるかないかがわかっている.気象予報士であるあなたは,各小区画について,今から何分後に初めてその小区画の上空に雲が来るかを予測することになった.

各小区画について,今から何分後に初めてその小区画の上空に雲が来るか求めよ.

入力

入力は 1 + H 行からなる.

1 行目には,整数 H, W (1 ≦ H ≦ 100, 1 ≦ W ≦ 100) が空白を区切りとして書かれている.これは,JOI 市が H × W 個の 1 キロメートル四方の小区画に区切られていることを表す.

続く H 行のうちの i 行目 (1 ≦ i ≦ H) には W 文字からなる文字列が書かれている.W 文字のうちの j 文字目 (1 ≦ j ≦ W) は,小区画 (i, j) の上空に,今,雲があるかどうかを表す.雲がある場合は文字 'c' (英小文字) が,雲がない場合は文字 '.' (ピリオド) が書かれている.

出力

出力は H 行からなり,それぞれの行は空白を区切りとした W 個の整数からなる.出力の i 行目の j 番目の整数 (1 ≦ i ≦ H, 1 ≦ j ≦ W) は,今から何分後に初めて小区画 (i, j) の上空に雲が来るかを表さなければならない.ただし,今すでに小区画 (i, j) の上空に雲がある場合は 0 を,何分経っても小区画 (i, j) の上空に雲が来ない場合は -1 を出力せよ.

出力の各行の行頭と行末には余計な空白を入れないこと.

入出力例

入力1

3 4
c..c
..c.
....

出力1

0 1 2 0
-1 -1 0 1
-1 -1 -1 -1

入出力例 1 では,JOI 市は 3 × 4 個の小区画に区切られている.今の JOI 市の雲の状況は以下の通りである.図の上が北を表す.

ほげ

この後,1 分ごとに雲は以下のように移動する.

ほげ ほげ ほげ

入力2

6 8
.c......
........
.ccc..c.
....c...
..c.cc..
....c...

出力2

-1 0 1 2 3 4 5 6
-1 -1 -1 -1 -1 -1 -1 -1
-1 0 0 0 1 2 0 1
-1 -1 -1 -1 0 1 2 3
-1 -1 0 1 0 0 1 2
-1 -1 -1 -1 0 1 2 3





解説


小区画 (i, j) の上空に初めて雲が現れるまでの分単位の時間は,北から i 番目の雲がある小区画のうち,西から j 番目より西にあり,最も小区画 (i, j) に近いものから,小区画 (i, j) までのキロメートル単位の距離に等しい.

この答えは以下のようなやり方で求められる. 北から i 番目の小区画を西から東へ見ていき,最後に雲があった場所を覚えておく.小区画 (i, j) の答えは,j まで見た時に最後に雲があった小区画から (i, j) までの距離となる.

また,W 分の間,雲がどの小区画に存在するかをシミュレートしても解くことができる.

JOI 市全体の雲の位置を覚えて,1 分経つと雲の場所を 1 つ東に動かす.ある小区画の上に初めて雲が現れたら,その時刻を記録する.W分経つとすべての雲は JOI 市から外へ出ていき,これ以降雲が JOI 市の上空へ出てくることはないため,W 分間のシミュレーションをすれば十分である.

どちらのやり方でも,雲が小区画を一度も覆わなかったときは,-1 がその小区画に対する答えとなること,初めから小区画の上空に雲があるときは 0 が答えとなることに注意.小区画 (i, j) の上空に初めて雲が現れるまでの分単位の時間は,北から i 番目の雲がある小区画のうち,西から j 番目より西にあり,最も小区画 (i, j) に近いものから,小区画 (i, j) までのキロメートル単位の距離に等しい.

この答えは以下のようなやり方で求められる. 北から i 番目の小区画を西から東へ見ていき,最後に雲があった場所を覚えておく.小区画 (i, j) の答えは,j まで見た時に最後に雲があった小区画から (i, j) までの距離となる.

また,W 分の間,雲がどの小区画に存在するかをシミュレートしても解くことができる.

JOI 市全体の雲の位置を覚えて,1 分経つと雲の場所を 1 つ東に動かす.ある小区画の上に初めて雲が現れたら,その時刻を記録する.W分経つとすべての雲は JOI 市から外へ出ていき,これ以降雲が JOI 市の上空へ出てくることはないため,W 分間のシミュレーションをすれば十分である.

どちらのやり方でも,雲が小区画を一度も覆わなかったときは,-1 がその小区画に対する答えとなること,初めから小区画の上空に雲があるときは 0 が答えとなることに注意.