아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

당선자는 바로

면접 대비

시간 제한1초메모리 제한128 MB

요약
한 투표용지에는 후보마다 문자가 하나씩 있고, 같은 선거구에서 두 명 이상을 표시한 용지 전체를 버린 뒤 각 선거구에서 최다 득표자(동점 포함)를 입력 순서대로 출력한다.
난이도

보통10점 중 5점

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

문제

선거가 끝나면 각 후보가 받은 표를 집계하여 당선자를 가려내야 한다. 다만 유권자가 투표용지를 잘못 기표하는 경우가 있으므로 주의해야 하며, 잘못 기표된 투표용지는 무효로 처리해야 한다. 선거의 당선자를 정확히 가려내는 프로그램을 작성하여라.

왜 여러 개의 선거를 한 번에 다룰까? 보통 하나의 투표용지에는 상원의원, 하원의원, 지역구 직책 등 여러 종류의 선출 항목이 함께 들어 있다. 이 문제에서는 그중 어느 한 항목이라도 잘못 기표되면 그 투표용지 전체를 무효로 간주한다.

입력

첫 줄에는 파일에 들어 있는 데이터 집합의 개수 KK (K≥1K \ge 1)가 주어진다. 그 뒤로 아래 형식의 데이터 집합이 KK개 이어진다.

각 데이터 집합의 첫 줄에는 세 정수 nn, rr, vv가 주어진다. 각각 후보의 수(1≤n≤1001 \le n \le 100), 선거(경선)의 수(1≤r≤91 \le r \le 9), 유권자의 수(1≤v≤100001 \le v \le 10000)이다. 이어서 nn개의 줄에 걸쳐 후보 정보가 주어진다. 각 줄은 먼저 그 후보가 출마한 선거 번호를 나타내는 11부터 99까지의 정수로 시작하고, 공백 한 칸에 이어 후보의 이름이 온다(이름에는 공백이 포함될 수 있다). 각 선거에는 후보가 적어도 한 명 있다.

그다음 vv개의 줄에는 각 유권자의 투표 내용이 주어진다. 각 줄은 정확히 nn개의 문자로 이루어지며, 각 문자는 x 또는 #이다. jj번째 위치의 x는 그 유권자가 jj번째 후보에게 투표했음을, #는 투표하지 않았음을 뜻한다. 한 유권자가 같은 선거에 속한 후보 중 둘 이상에게 투표했다면 그 투표용지 전체를 무효로 처리한다. 반면 어떤 선거에서 아무 후보에게도 투표하지 않은 것은 괜찮다.

출력

각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력한다. 여기서 x는 데이터 집합의 번호이다. 그다음, 각자의 선거에서 1위를 했거나 1위로 공동 순위에 오른 모든 후보의 이름을 입력에 등장한 순서대로 출력한다.

예제5

  1. 예제 1

    입력
    1
    5 2 5
    1 Jay Bulworth
    1 Hugh Waldron
    2 USC
    2 UCLA
    2 CalTech
    xx###
    x#x##
    ####x
    xx#x#
    x####
    
    예상 출력
    Data Set 1:
    Jay Bulworth
    USC
    CalTech
    
  2. 예제 2

    입력
    1
    1 1 1
    1 Alice
    x
    
    예상 출력
    Data Set 1:
    Alice
    
  3. 예제 3

    입력
    1
    3 1 4
    1 Anna
    1 Bob
    1 Carl
    x##
    #x#
    xx#
    ###
    
    예상 출력
    Data Set 1:
    Anna
    Bob
    
  4. 예제 4

    입력
    2
    2 1 3
    1 X
    1 Y
    x#
    x#
    #x
    1 1 1
    1 Solo
    x
    
    예상 출력
    Data Set 1:
    X
    Data Set 2:
    Solo
    
  5. 예제 5

    입력
    1
    4 2 3
    1 Red
    1 Blue
    2 Cat
    2 Dog
    x#x#
    x##x
    #x#x
    
    예상 출력
    Data Set 1:
    Red
    Dog