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

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

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

問題

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

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

ゲームの初期状態におけるトランプの配置と、
ゲームが終わるまでに捲られたトランプに関する時系列順の記録が与えられます。
その記録を用いて、各プレイヤーが取り除いたトランプの枚数を求めてください。

とあります。

捲られたトランプの記録を受け取って、捲られたトランプが揃っているか判定してみましょう。

入力される値

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


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}
L
a_1 b_1 A_1 B_1
a_2 b_2 A_2 B_2
...
a_L b_L A_L B_L


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

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

・ H+2 行目に記録の長さ L が与えられます。

・ H+3 行目から H+L+3 行目までの L 行にかけて、捲られたトランプの記録が時系列順で与えられます。これは、a_i 行 b_i 列のトランプと A_i 行 B_i 列のトランプが捲られたことを表します。


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

L 個の記録それぞれについて、捲られたカードが揃っていれば YES を揃っていなければ NO を 1 行に出力してください。
出力は合計で L 行となります。各行の最後は改行し、余計な文字、空行を含んではいけません。

条件

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

・ 1 ≦ H, W ≦ 13

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

・ 2 ≦ N ≦ 10

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

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

・ 1 ≦ L ≦ 200

・ 1 ≦ a_i, A_i ≦ H

・ 1 ≦ b_i, B_i ≦ W

・ a_i 行 b_i 列および A_i 行 B_i 列のトランプは取り除かれていない

・ (a_i, b_i) ≠ (A_i, B_i)

入力例1

5 4 3
13 5 12 12
5 13 5 4
7 11 10 4
12 4 7 10
5 12 4 11
2
3 2 3 4
3 2 3 3

出力例1

NO
NO

入力例2

4 3 2
5 7 8
12 9 8
5 9 8
7 12 8
4
1 3 4 1
1 3 3 3
1 1 1 2
1 2 2 2

出力例2

NO
YES
NO
NO

問題一覧へ戻る

ページの先頭へ戻る