판타지 드래프트

시간 제한2초메모리 제한512 MB

요약
각 구단주가 자신의 선호 목록에서 아직 뽑히지 않은 가장 좋은 선수를 고르고, 목록이 모두 소진되면 지난해 순위를 따르는 드래프트를 시뮬레이션한다.
난이도

보통10점 중 5점

유형
시뮬레이션, 해시맵, 구현, 그리디
정답자
아직 제출이 없습니다

문제

판타지 하키에서 n명의 구단주가 각각 k명의 하키 선수를 선발한다. 어떤 구단주가 어떤 선수를 가져갈지 정하기 위해 구단주들은 드래프트를 진행한다.

드래프트는 다음과 같이 진행된다. 첫 번째 구단주는 아무 선수나 선택할 수 있고, 그다음 두 번째 구단주는 첫 번째로 뽑힌 선수를 제외한 아무 선수나 선택할 수 있다. 일반적으로 현재 차례의 구단주는 이전에 뽑히지 않은 선수 중 아무 선수나 선택할 수 있다. 모든 구단주가 선수를 한 명씩 선택하면, 모든 구단주가 k명의 선수를 선택할 때까지 이 과정을 반복한다. 한 선수를 여러 팀이 선택할 수는 없다.

처음에 모든 선수는 작년 성적에 따라 순위가 매겨진다. 하지만 구단주들은 이 순서에 동의하지 않을 수 있다. 예를 들어, 첫 번째 구단주는 작년에 3위였던 선수가 최고의 선수라고 생각하여 그 선수를 더 선호할 수 있다.

각 구단주는 선호 목록을 가지고 있다. 자기 차례가 되면, 구단주는 자신의 선호 목록에서 아직 뽑히지 않은 선수 중 가장 높은 선수를 선택한다. 선호 목록에 있는 모든 선수가 이미 뽑혔다면, 작년 순위를 사용한다.

각 구단주의 선호 목록과 작년 순위가 주어졌을 때, 각 구단주가 어떤 선수를 가져갔는지 구하시오.

입력

입력의 첫 번째 줄에는 구단주의 수 n (1 ≤ n ≤ 60)과 각 팀의 크기 k (1 ≤ k ≤ 1 000)가 주어진다.

다음 n개의 줄에는 드래프트 순서대로 구단주들의 선호 목록이 주어진다. 각 줄은 i번째 구단주 선호 목록의 크기 qi (0 ≤ qi ≤ 1 500)로 시작한다. 이어서 qi개의 이름이 i번째 구단주의 선호 순서대로 공백으로 구분되어 주어진다. i번째 구단주의 목록에 같은 이름이 두 번 이상 나오지 않는다.

그다음 줄에는 드래프트에 참가하는 선수의 수를 나타내는 정수 p (n · k ≤ p ≤ 65 000)가 주어진다.

다음 p개의 줄에는 선수 이름이 하나씩 주어지며, 작년 순위 순서대로 나열되어 있다. 각 선수 이름은 서로 다르고, 최대 12자의 영문 알파벳으로 이루어져 있다.

구단주 선호 목록에 있는 이름은 선수 목록에 반드시 등장한다.

출력

n개의 줄을 출력한다. i번째 줄에는 i번째 구단주가 선택한 k명의 선수 이름을 출력한다. n개의 팀은 원래 구단주 순서대로 나열하고, 선수는 위 규칙에 따라 드래프트된 순서대로 나열한다.

예제2

  1. 예제 1

    입력
    2 2
    0
    0
    6
    Shoresy
    Jonesy
    Reilly
    Sholtzy
    Fisky
    Yorkie
    
    예상 출력
    Shoresy Reilly
    Jonesy Sholtzy
    
  2. 예제 2

    입력
    2 2
    2 Reilly Shoresy
    2 Shoresy Reilly
    6
    Shoresy
    Jonesy
    Reilly
    Sholtzy
    Fisky
    Yorkie
    
    예상 출력
    Reilly Jonesy
    Shoresy Sholtzy