순위표

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

요약
푼 문제 수와 총 시간으로 팀 순위를 매기고, 동점이면 같은 순위를 주고 알파벳 순으로 나열한다.
난이도

보통10점 중 4점

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

문제

프로그래밍 대회의 순위표를 만드는 프로그램을 작성한다. 참가 팀 목록과, 팀들이 제출한 모든 풀이를 기록한 로그가 주어진다.

채점은 다음 규칙을 따른다.

  1. 팀은 맞힌 문제의 총개수가 많은 순서대로 순위가 매겨진다.
  2. 맞힌 문제 수가 같은 팀들은 총 시간이 적은 순서대로 순위가 매겨진다.
  3. 총 시간은 맞힌 각 문제에 소요된 시간의 합이다. 어떤 문제에 소요된 시간은, 대회 시작부터 그 문제가 정답으로 처리된 제출까지 걸린 시간(분)에, 그 문제에 대해 오답으로 처리된 제출 하나마다 벌점 20분을 더한 값이다(오답 제출 시각과는 무관하다). 끝내 맞히지 못한 문제는 시간에 포함되지 않는다.

총 시간이 같을 때의 세부 동점 처리 절차는 이 문제에서 구현하지 않는다. 대신, 맞힌 문제 수와 총 시간이 모두 같은 팀이 둘 이상이면 이들에게 같은 순위를 부여하고 이름의 알파벳 순으로 나열한다.

팀의 순위 rr은 정확히 r−1r-1개 팀이 더 좋은 성적을 냈음을 뜻하므로, 동점이 발생하면 순위는 건너뛴다. 예를 들어 상위 두 팀의 맞힌 문제 수와 총 시간이 같다면 두 팀 모두 순위 11을 받고, 그다음 팀은 순위 33을 받는다. 이때 순위 22를 받는 팀은 없다.

마지막으로, 같은 팀이 같은 문제에서 이미 정답으로 처리받은 뒤에 낸 오답 제출에는 벌점을 매기지 않는다.

입력

첫째 줄에 시나리오의 개수가 주어진다.

각 시나리오는 팀의 수 nn(1≤n≤201 \le n \le 20)이 적힌 줄로 시작하고, 이어지는 nn개의 줄에 팀들의 서로 다른 이름이 알파벳 순으로 주어진다. 팀 이름은 영문자와 숫자로만 이루어진 길이 8 이하의 한 단어이다.

그다음 줄에는 문제의 수 kk와 제출된 풀이의 수 mm이 주어진다(1≤k<101 \le k < 10, 0≤m≤20000 \le m \le 2000). 이어지는 mm개의 줄은 각각 하나의 제출을 problem time correctness team 형식으로 나타낸다. 여기서 1≤problem≤k1 \le problem \le k는 문제 번호, 0≤time<3000 \le time < 300은 대회 시작 이후 경과한 시간(분), correctness는 Yes 또는 No, team은 제출한 팀의 이름이다. 제출들은 시간 순으로 정렬되어 있다.

출력

각 시나리오마다 참가한 모든 팀을 담은 순위표를 출력한다. 각 줄의 형식은 rank. team solved time이며, rank는 순위, team은 팀 이름, solved는 맞힌 문제 수, time은 총 시간이다.

네 항목은 한 칸의 공백으로 구분하며, 고정 너비를 사용한다. 순위는 너비 2, 팀 이름은 너비 8, 맞힌 문제 수는 너비 1, 총 시간은 너비 4이다. 이름은 왼쪽 정렬, 숫자는 오른쪽 정렬한다(예제 출력 참고).

서로 다른 시나리오의 순위표는 빈 줄로 구분한다.

예제3

  1. 예제 1

    입력
    2
    10
    Team1
    Team2
    Team3
    Team4
    Team5
    Team6
    Team7
    Team8
    Team9
    slowTeam
    8 14
    1 18 Yes Team4
    1 57 Yes Team2
    1 87 Yes Team3
    1 101 Yes Team1
    2 103 Yes Team5
    2 120 Yes Team6
    6 141 Yes Team7
    1 147 No Team1
    7 156 Yes Team2
    5 167 Yes Team8
    2 167 Yes Team9
    5 170 No Team4
    5 175 Yes Team4
    1 234 No slowTeam
    1
    Team1
    8 0
    
    예상 출력
     1. Team2    2  213
     1. Team4    2  213
     3. Team3    1   87
     4. Team1    1  101
     5. Team5    1  103
     6. Team6    1  120
     7. Team7    1  141
     8. Team8    1  167
     8. Team9    1  167
    10. slowTeam 0    0
    
     1. Team1    0    0
    
  2. 예제 2

    입력
    1
    1
    Alpha
    1 1
    1 5 Yes Alpha
    
    예상 출력
     1. Alpha    1    5
    
  3. 예제 3

    입력
    1
    1
    Beta
    2 3
    1 10 No Beta
    1 20 No Beta
    1 30 Yes Beta
    
    예상 출력
     1. Beta     1   70