순위
면접 대비시간 제한1초메모리 제한1024 MB
대회 제출 기록이 주어질 때 각 팀의 해결 문제 수와 총 패널티 시간을 계산하고, 마지막으로 점수가 달라진 시점을 기준으로 동점을 가려 순위를 출력한다.
문제
프로그래밍 대회를 개최하는 것은 즐거운 일이지만, 할 일도 많다. 예를 들어 대회가 끝나면 심사위원은 대회 중의 결과를 바탕으로 팀 순위를 만들어야 한다. 손으로 하기에는 번거로운 작업이므로, 이 작업을 수행하는 프로그램을 작성해 달라고 부탁하고 싶다.
BAPC의 순위 규칙은 다음과 같다:
- 팀은 해결한 문제 수가 많은 순으로 순위가 매겨지며, 동점인 팀은 총 사용 시간이 적은 순으로 정렬한다.
- 어떤 문제의 사용 시간은 대회 시작부터 처음으로 정답을 받은 제출까지의 분 수에, 처음 정답을 받은 제출 이전의 오답 제출마다 20분의 페널티를 더한 값이다.
- 총 사용 시간은 해결한 각 문제의 사용 시간(위에서 설명한 대로)의 합이다. 정답을 받지 못한 문제의 페널티 시간은 총 사용 시간에 포함되지 않는다.
- 대회가 끝났는데도 동점이 남아 있다면, 동점인 팀들 사이의 비교 기준은 두 팀의 점수가 마지막으로 달라졌던 시점이다. (예를 들어 두 팀이 대회 종료 시점에 동점이라면, 마지막 문제를 더 일찍 해결한 팀이 이긴다.)
대회 중에 팀들은 문제의 해답을 제출하고, 심사위원은 이를 런(run)으로 처리한다. 각 런은 네 가지 속성을 가진다:
- 대회 시작 후 제출 시각(분 단위, 1 이상 300 이하의 정수);
- 해답을 제출한 팀의 이름(길이 20 이하의 소문자로 이루어진 비어 있지 않은 문자열);
- 해당 문제의 식별자(대문자 A부터 J까지);
- 채점 소프트웨어가 판정한 결과(accepted 또는 rejected).
대회가 끝나면 런의 목록이 주어지며(제출 시각이 감소하지 않는 순서로 정렬되어 있음), 여러분은 팀들의 최종 순위를 결정해야 한다.
동점인 팀들은 같은 순위를 가지며, 그런 팀들은 결과에서 알파벳 순으로 정렬되어야 한다.
입력
첫째 줄에 정수 t (1 ≤ t ≤ 100)가 주어진다. 이는 테스트 케이스의 수이다. 각 테스트 케이스는 다음과 같다:
- 팀의 수 t (1 ≤ t ≤ 50)와 런의 수 r (0 ≤ r ≤ 5 000)이 공백 하나로 구분되어 주어지는 한 줄;
- 그다음 t개의 줄, 각 줄에 팀 이름;
- 그다음 r개의 줄, 각 줄에 런의 설명이 위에서 설명한 형식으로 주어지며, 시각, 팀, 문제, 결과가 공백 하나로 구분된다.
출력
각 테스트 케이스마다:
- 정렬된 결과를 출력한다. t개의 줄에 각각 순위(1부터 시작), 팀 이름, 맞힌 문제 수, 총 페널티 시간을 공백 하나로 구분하여 출력한다.