우승자는 누구?

면접 대비

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

요약
제출 기록의 verdict와 시각이 주어질 때, 각 참가자의 해결 문제 수와 ICPC 방식의 벌점 점수를 계산한 뒤 순위대로 출력한다.
난이도

보통10점 중 4점

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

문제

대회가 끝나면 참가자들은 어디서 막혔는지 아쉬워하며 좌절하곤 한다.

심사위원들도 마찬가지다. 제출 기록을 바탕으로 각 참가자의 점수를 계산하고 순위를 매겨야 하기 때문이다.

대회는 끝났지만 아직 코딩할 힘이 남아 있다면, 심사위원들을 도와 순위를 산정하는 프로그램을 만들어 보자.

입력

첫 줄에 테스트 케이스의 수 KK가 주어진다.

각 테스트 케이스의 첫 줄에는 세 정수 MM, NN, PP가 주어진다.

  • MM은 대회에 사용된 문제의 수이다 (1≤M≤101 \le M \le 10).
  • NN은 전체 제출 수이다 (1≤N≤50001 \le N \le 5000).
  • PP는 참가자 수이다 (1≤P≤5001 \le P \le 500).

각 문제는 앞에서부터 AA, BB, …\dots 순으로 이름 붙어 있고, 참가자는 11번부터 PP번까지의 번호를 가진다.

이어서 NN개의 줄에 걸쳐 제출 기록이 주어진다. 각 기록은 p m t j 형식이며, pp는 제출한 참가자 번호, mm은 문제 이름(AA, BB, …\dots), tt는 제출 시각, jj는 정답 여부이다. j=0j = 0이면 오답, j=1j = 1이면 정답이다.

제출 기록은 제출 시각이 감소하지 않는 순서로 주어진다.

어떤 참가자가 한 문제를 처음으로 맞히면, 그 참가자의 총점에 (맞힌 시각) ++ (그 문제를 맞히기 전까지 틀린 횟수) ×20\times 20 이 더해진다. 같은 문제를 여러 번 맞히더라도 처음 맞힌 것만 인정되며, 그 문제를 맞힌 뒤의 제출은 모두 무시한다. 끝까지 맞히지 못한 문제는 점수에 아무런 영향을 주지 않는다.

출력

각 테스트 케이스마다 먼저 Data Set K:를 출력한다(여기서 KK는 테스트 케이스 번호이다).

그다음 PP명의 참가자를 순위가 높은 순서대로 한 줄에 한 명씩, 참가자 번호, 푼 문제 수, 총점을 공백으로 구분하여 출력한다.

순위 규칙은 다음과 같다.

  • 푼 문제 수가 더 많은 참가자가 더 높은 순위이다.
  • 푼 문제 수가 같다면 총점이 더 낮은 참가자가 더 높은 순위이다.

모든 테스트 케이스에서 순위가 완전히 같은 참가자(동점자)는 존재하지 않는다.

서로 다른 테스트 케이스 사이에는 빈 줄을 하나 출력한다.

예제6

  1. 예제 1

    입력
    2
    4 6 3
    2 C 11 0
    1 B 24 1
    2 C 25 1
    1 C 40 0
    3 D 55 1
    2 B 55 1
    2 8 2
    1 A 8 0
    2 B 11 1
    1 A 11 0
    1 A 14 0
    1 A 20 0
    2 B 22 1
    2 A 23 0
    1 A 24 1
    
    예상 출력
    Data Set 1:
    2 2 100
    1 1 24
    3 1 55
    
    Data Set 2:
    2 1 11
    1 1 104
    
  2. 예제 2

    입력
    1
    1 1 1
    1 A 100 1
    
    예상 출력
    Data Set 1:
    1 1 100
    
  3. 예제 3

    입력
    1
    2 3 2
    1 A 5 0
    1 A 10 0
    2 B 15 1
    
    예상 출력
    Data Set 1:
    2 1 15
    1 0 0
    
  4. 예제 4

    입력
    1
    1 4 1
    1 A 1 0
    1 A 2 0
    1 A 3 0
    1 A 100 1
    
    예상 출력
    Data Set 1:
    1 1 160
    
  5. 예제 5

    입력
    1
    3 3 3
    1 A 50 1
    2 B 30 1
    3 C 40 1
    
    예상 출력
    Data Set 1:
    2 1 30
    3 1 40
    1 1 50
    
  6. 예제 6

    입력
    3
    1 1 1
    1 A 5 1
    1 1 1
    1 A 7 0
    2 2 2
    1 A 3 1
    2 B 4 1
    
    예상 출력
    Data Set 1:
    1 1 5
    
    Data Set 2:
    1 0 0
    
    Data Set 3:
    1 1 3
    2 1 4