1. paizaラーニングトップ
  2. レベルアップ問題集
  3. Bランク・スキルチェック過去問題セット(言語選択)
  4. 問題一覧 C#編
  5. 神経衰弱を解くために:part4 C#編

Bランク・スキルチェック過去問題セットのサムネイル
神経衰弱を解くために:part4 C#編(paizaランク C 相当)

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

問題

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

「神経衰弱」の問題文を見ると


プレイヤーが N 人おり、それぞれ 1 〜 N で番号付けられているものとします。
ゲームが始まると、1番の人から以下の手順でプレイしていきます。

・ 任意の2枚のトランプを捲る。
・ 捲った2枚のトランプに異なる数字が書かれていれば、次のプレイヤーの手番となる。そうでなければ、以下の操作を行う。
・ 2枚のトランプを取り除き、自分のものとする。
・ トランプが全て取り除かれていれば、ゲームを終了する。
・ 手順の先頭に戻る。

ここで、N 番のプレイヤーの次のプレイヤーは 1 番のプレイヤーであるとします。

ゲームの初期状態におけるトランプの配置と、
ゲームが終わるまでに捲られたトランプに関する時系列順の記録が与えられます。

とあります。

手番のプレイヤーの番号とある時点での捲られたトランプの記録が与えられるので、捲った2枚のトランプに同じ数字が書かれていたかどうかと、次の手番のプレイヤーの番号を出力してください。

入力される値

入力は以下のフォーマットで与えられます。

H W N
t_{1,1} t_{1,2} ... t_{1,W}
t_{2,1} t_{2,2} ... t_{2,W}
...
t_{H,1} t_{H,2} ... t_{H,W}
P
a b A B


・ 1 行目に並べられたトランプの縦方向の枚数 H と横方向の枚数 W、 プレイヤーの数 N が半角スペース区切りで与えられます。

・ 2 行目から H+1 行目までの H 行にかけて i (1 ≦ i ≦ H) 行 j (1 ≦ j ≦ W) 列に並べられたトランプに書かれた数字が半角スペース区切りで与えられます。

・ H+2 行目に手番のプレイヤーの番号 P が与えられます。

・ H+3 行目にある時点で捲られたトランプの記録が与えられます。これは、a 行 b 列のトランプと A 行 B 列のトランプが捲られたことを表します。


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

1 行目に捲った2枚のトランプに同じ数字が書かれていたなら YES を同じ数字が書かれていなければ NO を、
2 行目に次の手番のプレイヤーの番号を、
それぞれ出力してください。
また、末尾に改行を入れ、余計な文字を含んではいけません。

条件

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

・ 1 ≦ H, W ≦ 13

・ H × W は52以下の2の倍数

・ 2 ≦ N ≦ 10

・ t_{i,j} は1,...,13のいずれか

・ 並べられたトランプの中に、同じ数字が書かれたトランプは2枚または4枚ある

・ 1 ≦ P ≦ N

・ 1 ≦ a, A ≦ H

・ 1 ≦ b, B ≦ W

・ a 行 b 列および A 行 B 列のトランプは取り除かれていない

・ (a, b) ≠ (A, B)

入力例1

4 3 2
6 6 13
13 5 13
6 3 13
3 6 5
1
4 3 4 1

出力例1

NO
2

入力例2

6 1 2
10
11
1
1
11
10
1
4 1 3 1

出力例2

YES
1

問題一覧へ戻る

ページの先頭へ戻る