No.2657 Falling Block Game
タグ : / 解いたユーザー数 50
作問者 :



問題文
画面上で上から下へ落ちていくボールを左右に操作し、 障害物をよけて一番下を目指すコンピューターゲームがあります。
ゲーム画面は高さ マス、横 マスのグリッドで表されます。
上から 行目、左から 列目のマスを と表します。
ボールは時刻 に一番上の行のいずれかのマスにランダムに出現し、
秒ごとに一つ下のマスに瞬間的に移動します。
つまり、
において、
時刻 に から に瞬間的に移動します。
また、 にボールがあるときにプレーヤーが左ボタンを押すと に、
右ボタンを押すと に瞬間的に移動します。
但し下への移動と左右への移動は同時にはできません(つまり斜め移動はできません)。
またグリッドの外には移動できません。
マス の障害物の有無は文字 で表されます。
#
のときは障害物があり、.
のときは障害物がありません。
ボールが障害物のあるマスに移動するとゲームオーバーです。
ゲームオーバーにならずに一番下の行のいずれかのマスに移動するとゲームクリアです。
一番上の行と一番下の行には障害物がありません。
また、ゲームクリア不可能な障害物配置になることはありません。
hamamuさんは腱鞘炎なので、
一秒間にボタンを押す回数の最大値 を最小化してゲームクリアしたいです。
形式的には、
において時刻 から の間にボタンを押す回数を とし、
として、
を最小化したいです。
に対し、ボールがマス に出現したときの の最小値を求めてください。
制約
- は全て
.
- 時刻 にボールがどのマスに出現しても、ゲームクリアが可能である
- は整数
- は
.
か#
入力
以下の形式で標準入力から与えられます。出力
行出力してください。
行目にボールがマス に出現したときの の最小値を出力してください。
最後に改行してください。
サンプル
サンプル1
入力
3 3 ... ##. ...
出力
2 1 0
のとき、時刻 にボールがマス に出現します。
時刻 から の間に右ボタンを 回押すと、マス に移動します。
時刻 にマス に移動します。
時刻 にマス に移動し、一番下の行に到達したのでゲームクリアになります。
このとき、 であり、 です。
でゲームクリアする方法は存在しないため、答は です。
同様に、 のときの の最小値は であるため、それらを出力します。
サンプル2
入力
4 3 ... ... ##. ...
出力
1 1 0
のときのみ説明します。
時刻 にボールがマス に出現します。
時刻 から の間に右ボタンを 回押すと、マス に移動します。
時刻 にマス に移動します。
時刻 から の間に右ボタンを 回押すと、マス に移動します。
時刻 にマス に移動します。
時刻 にマス に移動し、一番下の行に到達したのでゲームクリアになります。
このとき、 であり、 です。
でゲームクリアする方法は存在しないため、答は です。
サンプル3
入力
5 8 ........ .######. ........ ##...### ........
出力
2 2 2 3 3 3 3 3
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。