만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

마법 카드

면접 대비

시간 제한3초메모리 제한2048 MB

요약
N 이하의 수가 적힌 K장의 카드와 각 친구의 Y/N 답변이 주어질 때, 친구가 고른 수를 찾습니다. 유일하지 않으면 0을 출력합니다.
난이도

보통10점 중 4점

유형
해시맵, 비트 연산, 배열
정답자
아직 제출이 없습니다

문제

찬수와 준수는 International College of Programming Convergence의 친구이다. 어느 날 찬수가 준수를 만나 말했다. "내가 마술을 보여 줄게. 11부터 1212 사이의 수 하나를 골라서 나에게 말하지 말고 마음속에만 간직해." 준수는 마음속으로 1111을 골랐다. 찬수는 준수에게 카드 네 장을 한 장씩 보여 주며 매번 "네 수가 이 카드에 있니?"라고 물었다. 준수는 "예, 예, 아니오, 예" 순서로 대답했다. 찬수는 한동안 팔과 다리를 이리저리 움직이며 요란한 몸짓을 하더니 마침내 외쳤다. "네 수를 알았다. 1111이다." 준수가 마음속에 둔 수와 정확히 같아서 준수는 깜짝 놀랐다. 찬수는 마술의 비밀을 밝히지 않았다. 그저 "이 카드들은 엄청난 마법의 힘이 있어서 네 마음을 읽고, 나만 알아들을 수 있는 마법의 언어로 그 내용을 나에게 알려 준다"라고만 했다. 이 마술은 어떻게 가능할까? 비밀을 알아낼 수 있겠는가? 이제 친구들이 마음속에 둔 수를 알아내는 프로그램을 작성하라. 이 마술은 다음과 같이 일반화할 수 있다. KK장의 마법 카드가 있고, 각 카드에는 11 이상 NN 이하의 정수 MM개가 적혀 있으며 같은 수가 중복될 수도 있다. 이 마술을 FF명의 친구에게 시행한다. FF명의 예/아니오 답변으로부터 올바른 수를 골라낸다.

입력

첫 줄에 네 정수 NN, KK, MM, FF가 주어진다 (1≤N≤500 0001 \le N \le 500\,000, 1≤K≤1001 \le K \le 100, 1≤M≤5 0001 \le M \le 5\,000, 1≤F≤50 0001 \le F \le 50\,000). 이어지는 KK개의 줄에는 각 마법 카드에 적힌 11 이상 NN 이하의 정수 MM개가 주어진다. 이어지는 FF개의 줄에는 Y와 N으로만 이루어진 길이 KK의 문자열이 주어진다. Y는 예, N은 아니오를 뜻한다. 모든 답변은 친구가 마음속에 둔 수에 맞게 올바르게 주어진다고 가정한다.

출력

FF개의 줄을 출력한다. ii번째 줄에는 ii번째 친구가 마음속에 둔 수를 출력한다. 그 수를 하나로 특정할 수 없으면 0을 출력한다.

예제3

  1. 예제 1

    입력
    12 4 6 3
    1 9 7 11 3 5
    2 10 3 6 7 11
    4 5 6 7 6 12
    8 11 10 9 12 9
    YYNY
    NNNY
    YNNN
    
    예상 출력
    11
    8
    1
    
  2. 예제 2

    입력
    13 4 6 4
    1 9 7 11 3 5
    2 10 3 6 7 11
    4 5 6 7 6 12
    8 11 10 9 12 9
    YYNY
    NNNY
    YNNN
    NNNN
    
    예상 출력
    11
    8
    1
    13
    
  3. 예제 3

    입력
    14 4 6 4
    1 9 7 11 3 5
    2 10 3 6 7 11
    4 5 6 7 6 12
    8 11 10 9 12 9
    YYNY
    NNNY
    YNNN
    NNNN
    
    예상 출력
    11
    8
    1
    0