Sea Battle

notion image
Du bist einer der Entwickler des Spiels „Sea Battle“. Deine Aufgabe ist es nun, eine der zentralen Statistiken im Spiel zu aktualisieren. Angesichts eines Spielbretts (Grid) sollst du herausfinden, wie viele Schiffe jeweils healthy (unbeschädigt), dead (komplett getroffen) und wounded (teilweise getroffen) sind. Dabei gelten folgende Bedingungen:
  • Keine Schiffe liegen direkt nebeneinander. Das heißt: Wenn zwei benachbarte Felder im Gitter als Teil eines Schiffs markiert sind, handelt es sich um dasselbe Schiff.
  • In dieser Version des Spiels können Schiffe beliebige Formen annehmen; sie müssen nicht geradlinig sein. (Dies ist ein fortgeschrittener Modus, der Premium-Nutzern vorbehalten ist.)
  • Wurde kein Bombentreffer an einem Schiff verzeichnet, ist das Schiff healthy.
  • Sind alle Felder eines Schiffs bombardiert, gilt das Schiff als dead.
  • Wenn nur ein Teil der Felder bombardiert wurde, gilt das Schiff als wounded.
Dein Programm soll schließlich die Anzahl der healthy, dead und wounded Schiffe im aktuellen Gitterzustand ausgeben.

Eingabe

Die erste Zeile der Eingabe enthält zwei Zeichen r und c (1 ≤ r, c ≤ 50) – die Zeilen- und Spaltenanzahl des Gitters.
Die nächsten r Zeilen enthalten jeweils c Zeichen, die das Gitter repräsentieren:
  • . steht für Wasser (kein Schiff)
  • s steht für eine unbeschädigte Schiffszelle
  • b steht für eine bombardierte Schiffszelle

Ausgabe

Das Programm soll drei Zahlen ausgeben – die Anzahl der healthy, dead und wounded Schiffe.

Beispiele

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