1. paizaラーニングトップ
  2. レベルアップ問題集
  3. スタック・キューメニュー応用編(言語選択)
  4. 問題一覧 C#編
  5. カードゲーム C#編

スタック・キューメニュー応用編のサムネイル
カードゲーム C#編(paizaランク B 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

カードゲームにはよくキーカードと呼ばれる、引けるかどうかで試合を大きく左右するカードが存在します。
どうしてもゲームに勝ちたい paiza 君は、40 枚のデッキの中に入っている 1 枚のキーカードを引きたいと考えていました。
そこで paiza 君は、山札の並びといくつかの発動する効果を入力した時にキーカードを引くことができるかを判定するプログラムを作成することにしました。
「キーカードが山札の上から何枚目にあるか」と発動する効果が時系列順に与えられるので、paiza 君がキーカードを引くことができるかを判定してください。
また、キーカードを引くことができる場合は、それが何回目の効果発動後になるかを答えてください。

なお、発動する効果は次のいずれかです。

・game_start
山札の上から 5 枚引く。

・draw X
山札の上から X 枚引く。

・discard X
山札の上から X 枚を、一番上のカードから順番に墓地へ送る。

・return_from_the_graveyard X
墓地の上から X 枚を、一番上のカードから順番に山札の一番下に加える。

・exclude X
山札の上から X 枚を、一番上のカードから順番に除外する。

・return_from_the_exclusion X
除外されているカードの上から X 枚を、一番上のカードから順番に山札の一番下に加える。

入力される値

N K
event_1
...
event_K


・1 行目ではキーカードが山札の上から何枚目にあるかを表す N と効果を発動する回数 K が半角スペース区切りで与えられます。
・2 行目からの K 行では、発動した効果の内容が時系列順に与えられます。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

・paiza 君がキーカードを引くことができる場合は、それが何回目の効果発動後になるかを出力してください。(game_start も効果に含まれることに注意してください。)
・キーカードを引くことができない場合は "Lose" と出力してください。

条件

すべてのテストケースにおいて、以下の条件をみたします。

・1 ≦ N ≦ 40
・event_1 は game_start であり、以後 game_start は登場しない。
・event_i (2 ≦ i) は次のいずれかの形式
「discard X」
「draw X」
「return_from_the_graveyard X 」
「exclude X」
「return_from_the_exclusion X」
・効果発動後に山札・墓地・除外のカードの枚数が負になるような入力は与えられないことが保証されている。

入力例1

10 5
game_start
draw 1
draw 2
draw 1
exclude 20

出力例1

Lose

入力例2

7 5
game_start
discard 34
return_from_the_graveyard 34
draw 20
draw 14

出力例2

5

問題一覧へ戻る

ページの先頭へ戻る