Sea Battle

notion image
あなたは「Sea Battle」ゲームの開発チームの一員です。現在、このゲームで最も重要な統計情報の1つを更新する任務を担当しています。与えられた盤面から、healthydead、そして wounded の船がそれぞれ何隻あるかを特定しなければなりません。次のことが分かっています:
  • どの船も互いに面が接することはありません。よって、グリッド上で隣り合うセルがともに船である場合、それらは同じ船とみなされます。
  • このゲームでは、船は必ずしも一直線とは限りません。これは、プレミアムユーザー向けの上級モードの機能です。
  • 爆弾が一度も当たっていない船は healthy です。
  • 船の全セルが爆弾で攻撃されている場合、その船は dead です。
  • 一部のセルだけが爆弾を受けている船は wounded とみなされます。
与えられたグリッドの状況から、healthydeadwounded の船の数を出力するプログラムを作成してください。

入力

最初の行には rc (1 ≤ r, c ≤ 50) の2文字が書かれており、それぞれグリッドの行数と列数を表します。
続く r 行には、それぞれ c 個の文字が含まれ、盤面を表現しています:
  • . は水面 (船なし)
  • s は無傷の船のセル
  • b は爆弾で攻撃された船のセル

出力

プログラムは3つの数値を出力します。それぞれ healthydeadwounded の船の数を表します。

Input

7 8
..s.bb.s
s.......
s.sssss.
b.s...s.
..sssbs.
s.......
ss......
Output

3 1 2
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue