상트페테르부르크에서 두 번의 지역 프로그래밍 대회가 열렸다. 두 대회에 모두 참가한 한 참가자가, 적어도 한 대회에 나온 모든 팀에 대한 통합 레이팅을 만들고자 한다.
각 팀에는 1부터 100까지의 정수로 된 고유한 식별 번호가 있다. 각 대회에서 참가 팀의 번호는 성적이 좋은 순서(위쪽이 더 좋은 성적)로 세로로 적으며, 성적이 같은 팀들은 한 줄에 함께 적는다.
정의: 어떤 팀보다 성적이 더 좋은 팀이 정확히 K−1개일 때, 그 팀의 등수는 K이다.
예를 들어 두 대회의 결과가 다음과 같다고 하자.
| 대회 1 | 대회 2 | ||
|---|---|---|---|
| 등수 | 팀 번호 | 등수 | 팀 번호 |
| 1 | 9 | 1 | 3 |
| 2 | 7 1 4 | 2 | 5 |
| 5 | 5 | 3 | 1 10 |
| 6 | 15 8 | 5 | 6 |
| 8 | 31 18 | 6 | 9 |
| 10 | 17 | 7 | 19 |
| 8 | 4 20 | ||
| 10 | 21 |
통합 레이팅은 다음 규칙으로 정한다.
두 대회에 모두 참가한 두 팀에 대해서는,
(즉, 두 대회에 모두 참가한 팀은 두 등수의 합이 작을수록 통합 레이팅이 높고, 합이 같으면 레이팅도 같다.)
이 예에서는 팀 1, 4, 5, 9만 두 번 참가했다. 팀 1의 레이팅이 가장 높고, 이어서 팀 5와 팀 9가 같은 레이팅으로 나란히 오며, 팀 4가 가장 낮다.
한 대회에만 참가한 팀은 통합 레이팅을 항상 정할 수 있는 것은 아니다. 이런 팀은 (두 번 참가한 팀들이 위 규칙대로 이미 배치된) 통합 목록에 다음 중 하나가 성립할 때에만 삽입된다.
A. 그 한 대회에서 두 대회에 모두 참가한 어떤 팀과 등수를 공유했다면, 이 팀은 그 팀과 같은 통합 레이팅을 가진다. 그런 팀이 여럿이면 그들의 통합 레이팅이 모두 같아야 하며, 그렇지 않으면 이 팀의 레이팅은 정할 수 없다.
B. 그렇지 않을 때, 통합 목록에서 어떤 위치(맨 앞, 맨 뒤, 또는 두 줄 사이)를 잡았을 때 그 앞의 모든 팀이 공통 대회에서 이 팀보다 성적이 좋고 그 뒤의 모든 팀이 이 팀보다 성적이 나쁘다면, 이 팀은 그 위치에 놓인다. 같은 위치를 주장하는 팀이 여럿이면, 그들끼리는 등수 순으로 배치한다(등수가 작을수록 앞이고, 등수가 같은 팀은 한 줄에 함께 온다).
예에 대한 설명:
| 두 대회에 모두 참가한 팀 | 한 대회에만 참가한 팀 |
|---|---|
| 3 | |
| 1 | 10 |
| 9 5 | |
| 19 | |
| 4 | 20 |
| 15 8 | |
| 31 18 | |
| 17 21 |
두 대회의 결과표와 위 규칙으로부터 통합 레이팅 목록을 만드는 프로그램을 작성하라.
입력은 빈 줄로 구분된 두 대회의 정보로 이루어진다. 각 정보는 뒤따르는 결과 줄의 개수인 정수 N (1≤N≤100) 하나가 적힌 줄로 시작한다. 그다음 각 줄에는 하나 이상의 팀 번호가 공백으로 구분되어 있다. 한 대회 안에서 각 팀 번호는 많아야 한 번 나타난다.
통합 레이팅 목록을 출력한다. 통합 레이팅이 높은 팀부터 낮은 팀 순으로, 한 줄에 공백으로 구분된 하나 이상의 팀 번호를 적으며, 같은 레이팅을 가진 팀들은 한 줄에 함께 적는다. 한 줄 안에서는 팀 번호를 오름차순으로 출력한다. 통합 레이팅을 정할 수 없는 팀은 출력하지 않는다.