問題一覧 > 通常問題

No.1313 N言っちゃダメゲーム (4)

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 通常問題
タグ : / 解いたユーザー数 80
作問者 : trineutrontrineutron / テスター : platinumplatinum
5 ProblemId : 3402 / 出題時の順位表
問題文最終更新日: 2020-05-28 14:54:12

問題文

あなたとGrantは、いわゆる「$21$言っちゃダメゲーム(棒取りゲームというところも)」を正の整数$N,K$を使って拡張したゲームを何度もしてきた。ルールは以下のとおりである。

1. まず先攻のプレイヤーは$0$が与えられる。
2. そこから$N$以上を宣言しないように(宣言したら負けになる)、与えられた数字に$1〜K$のどれかの整数を加算したものを宣言し相手プレイヤーに渡す。
3. 勝負がつくまで代わり代わりに 2. を繰り返す。

あなたがこのゲームの勝ち方を知ったため、Grantはこのゲームに勝てなくなっていた。
そこで、Grantは以下のルールを追加してあなたと勝負することにした。

4. $1$以上$N-1$以下の「危険な数字」がいくつか指定される。「危険な数字」を宣言してしまうと負けになる。

まずあなたが先攻となりゲームを始める。
この時、どちらも負けないように動くと考え、自然数$N,K$が与えられた時、
あなたが勝つことが出来る場合は、最初に宣言して勝てる数字を全て改行区切りで出力せよ。勝つことが出来ない場合は$0$を出力せよ。

入力

$N\ K$
$S$

$N, K$は整数
$1 \le K < N \le 2\times 10^5$
$S$はoまたはxからなる長さ$N-1$の文字列
$S$の$i$文字目がxのとき$i$は「危険な数字」

出力

あなたが勝つことが出来る場合は、最初に宣言して勝てる数字を全て改行区切りで出力せよ。勝つことが出来ない場合は$0$を改行付きで出力せよ。

サンプル

サンプル1
入力
21 3
oooooooooooooooooooo
出力
0

ふつうの21言っちゃダメゲームです。
後攻のプレイヤーがうまく数字を選べば、
先攻のプレイヤーは必ず負けます。

サンプル2
入力
21 3
oooxoooxoooxoooxooox
出力
3

「危険な数字」は4, 8, 12, 16, 20です。
最初に3を宣言すれば勝てます。1または2を宣言すると勝つことが出来ないため、3が答えになります。

サンプル3
入力
50 5
ooxoooxxoxoooxooooxxxoxxooxoxoxooooxxooxooooxoooo
出力
2

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。