대회가 끝나면 참가자들은 어디서 막혔는지 아쉬워하며 좌절하곤 한다.
심사위원들도 마찬가지다. 제출 기록을 바탕으로 각 참가자의 점수를 계산하고 순위를 매겨야 하기 때문이다.
대회는 끝났지만 아직 코딩할 힘이 남아 있다면, 심사위원들을 도와 순위를 산정하는 프로그램을 만들어 보자.
첫 줄에 테스트 케이스의 수 $K$가 주어진다.
각 테스트 케이스의 첫 줄에는 세 정수 $M$, $N$, $P$가 주어진다.
각 문제는 앞에서부터 $A$, $B$, $\dots$ 순으로 이름 붙어 있고, 참가자는 $1$번부터 $P$번까지의 번호를 가진다.
이어서 $N$개의 줄에 걸쳐 제출 기록이 주어진다. 각 기록은 p m t j 형식이며, $p$는 제출한 참가자 번호, $m$은 문제 이름($A$, $B$, $\dots$), $t$는 제출 시각, $j$는 정답 여부이다. $j = 0$이면 오답, $j = 1$이면 정답이다.
제출 기록은 제출 시각이 감소하지 않는 순서로 주어진다.
어떤 참가자가 한 문제를 처음으로 맞히면, 그 참가자의 총점에 (맞힌 시각) $+$ (그 문제를 맞히기 전까지 틀린 횟수) $\times 20$ 이 더해진다. 같은 문제를 여러 번 맞히더라도 처음 맞힌 것만 인정되며, 그 문제를 맞힌 뒤의 제출은 모두 무시한다. 끝까지 맞히지 못한 문제는 점수에 아무런 영향을 주지 않는다.
각 테스트 케이스마다 먼저 Data Set K:를 출력한다(여기서 $K$는 테스트 케이스 번호이다).
그다음 $P$명의 참가자를 순위가 높은 순서대로 한 줄에 한 명씩, 참가자 번호, 푼 문제 수, 총점을 공백으로 구분하여 출력한다.
순위 규칙은 다음과 같다.
모든 테스트 케이스에서 순위가 완전히 같은 참가자(동점자)는 존재하지 않는다.
서로 다른 테스트 케이스 사이에는 빈 줄을 하나 출력한다.