당선자는 바로
면접 대비시간 제한1초메모리 제한128 MB
한 투표용지에는 후보마다 문자가 하나씩 있고, 같은 선거구에서 두 명 이상을 표시한 용지 전체를 버린 뒤 각 선거구에서 최다 득표자(동점 포함)를 입력 순서대로 출력한다.
문제
선거가 끝나면 각 후보가 받은 표를 집계하여 당선자를 가려내야 한다. 다만 유권자가 투표용지를 잘못 기표하는 경우가 있으므로 주의해야 하며, 잘못 기표된 투표용지는 무효로 처리해야 한다. 선거의 당선자를 정확히 가려내는 프로그램을 작성하여라.
왜 여러 개의 선거를 한 번에 다룰까? 보통 하나의 투표용지에는 상원의원, 하원의원, 지역구 직책 등 여러 종류의 선출 항목이 함께 들어 있다. 이 문제에서는 그중 어느 한 항목이라도 잘못 기표되면 그 투표용지 전체를 무효로 간주한다.
입력
첫 줄에는 파일에 들어 있는 데이터 집합의 개수 ()가 주어진다. 그 뒤로 아래 형식의 데이터 집합이 개 이어진다.
각 데이터 집합의 첫 줄에는 세 정수 , , 가 주어진다. 각각 후보의 수(), 선거(경선)의 수(), 유권자의 수()이다. 이어서 개의 줄에 걸쳐 후보 정보가 주어진다. 각 줄은 먼저 그 후보가 출마한 선거 번호를 나타내는 부터 까지의 정수로 시작하고, 공백 한 칸에 이어 후보의 이름이 온다(이름에는 공백이 포함될 수 있다). 각 선거에는 후보가 적어도 한 명 있다.
그다음 개의 줄에는 각 유권자의 투표 내용이 주어진다. 각 줄은 정확히 개의 문자로 이루어지며, 각 문자는 x 또는 #이다. 번째 위치의 x는 그 유권자가 번째 후보에게 투표했음을, #는 투표하지 않았음을 뜻한다. 한 유권자가 같은 선거에 속한 후보 중 둘 이상에게 투표했다면 그 투표용지 전체를 무효로 처리한다. 반면 어떤 선거에서 아무 후보에게도 투표하지 않은 것은 괜찮다.
출력
각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력한다. 여기서 x는 데이터 집합의 번호이다. 그다음, 각자의 선거에서 1위를 했거나 1위로 공동 순위에 오른 모든 후보의 이름을 입력에 등장한 순서대로 출력한다.