콩도르세 역설
시간 제한5초메모리 제한128 MB
b개의 순위 투표와 c명의 후보가 주어질 때, 과반의 투표에서 다른 모든 후보를 일대일로 이기는 후보를 찾는다.
문제
콩도르세 승자는 다른 모든 후보를 일대일 대결에서 이기는 후보이다. 콩도르세 승자는 각 유권자가 자신이 선호하는 순서대로 모든 후보를 적는 방식의 투표에서만 결정할 수 있으며, 이때 사용하는 투표용지를 선호 리스트라고 한다.
후보 X가 후보 Y를 일대일로 이긴다는 것은, 전체 투표용지의 과반수(즉 절반을 초과하는 수)에서 X가 Y보다 앞 순위에 적혀 있다는 뜻이다. 모든 투표용지는 모든 후보의 순위를 매기므로, 임의의 두 후보에 대해 각 투표용지에서 정확히 한 쪽이 더 앞선다. 따라서 X는 절반을 초과하는 투표용지에서 Y보다 선호될 때 Y를 이긴다.
예를 들어 후보가 A, B, C 세 명이고 유권자 세 명의 선호 리스트가 각각 ABC, BAC, CBA라고 하자. 이때 콩도르세 승자는 B이다. B는 두 장의 투표용지(2번, 3번)에서 A보다 앞서고, 두 장(1번, 2번)에서 C보다 앞선다. 참고로 만약 이 예시를 보통의 다수 득표 방식(각 유권자의 1순위만 세는 방식)으로 처리하면 세 후보가 모두 동점이 된다.
콩도르세 승자는 많아야 한 명이지만, 존재하지 않을 수도 있다. 선호 리스트가 주어졌을 때 콩도르세 승자를 구하시오.
입력
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫째 줄에는 선호 리스트의 수 b와 후보의 수 c가 주어진다 (1 ≤ b ≤ 500, 1 ≤ c ≤ 2500). 후보는 0번부터 c-1번까지 번호가 매겨져 있다. 다음 b개의 줄에는 각각 하나의 선호 리스트가 주어지며, 그 유권자가 선호하는 순서(가장 선호하는 후보부터 가장 덜 선호하는 후보까지)대로 후보 번호가 나열된 0부터 c-1까지의 순열이다. 입력의 마지막 줄은 0 0이다.
출력
각 테스트 케이스마다 Case k: w를 출력한다. 여기서 k는 테스트 케이스 번호(1부터 시작)이고 w는 콩도르세 승자의 번호이다. 콩도르세 승자가 없으면 대신 Case k: No Condorcet winner를 출력한다.