만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

HNL

면접 대비

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

요약
N개 클럽의 승점과 마지막 라운드 경기 일정이 주어질 때, 어떤 결과 조합에서든 우승할 수 있는 클럽을 모두 구한다.
난이도

보통10점 중 5점

유형
완전 탐색, 정렬, 구현
정답자
아직 제출이 없습니다

문제

미르코는 축구를 좋아하고, 그중에서도 크로아티아 1부 리그(1. HNL)를 즐겨 본다. 리그에는 클럽이 NN개 있다.

순위는 승점이 많은 클럽이 앞에 오도록 정하고, 승점이 같은 클럽은 이름의 알파벳 순서로 정렬한다.

리그에는 마지막 한 라운드가 남았다. 승점 차이가 작은 클럽이 많아서 미르코는 아직 우승할 가능성이 있는 클럽을 모두 알고 싶어 한다. 미르코를 대신해 답을 구하는 프로그램을 작성하라.

현재 순위표와 마지막 라운드의 대진이 주어진다. 모든 팀은 정확히 한 경기를 치른다. 경기가 무승부로 끝나면 두 팀이 1점씩 얻는다. 그렇지 않으면 이긴 팀이 3점, 진 팀이 0점을 얻는다.

입력

첫째 줄에 리그에 속한 클럽의 수 NN (1≤N≤201 \le N \le 20)이 주어진다. NN은 짝수이다.

다음 NN개 줄에는 각각 클럽 이름과 승점이 공백 하나로 구분되어 주어진다. 클럽 이름은 영어 대문자로만 이루어진 한 단어이고, 이름이 같은 클럽은 없다. 승점은 100보다 작은 음이 아닌 정수이다. 클럽은 위에서 설명한 순위 기준에 따라 위에서부터 차례로 주어진다.

다음 N/2N/2개 줄에는 각각 경기 하나가 팀1 - 팀2 형식으로 주어진다. 팀1과 팀2는 그 경기를 치르는 두 클럽의 이름이다. 두 이름 사이의 구분 기호는 앞뒤에 공백이 하나씩 붙은 대시 문자 하나이며, ASCII 하이픈이거나 유니코드 en dash(U+2013)이다.

출력

우승하는 시나리오가 하나라도 있는 클럽의 이름을 모두 출력한다. 한 줄에 하나씩, 알파벳 순서로 출력한다.

힌트

첫 번째 예제에서 DINAMO가 ZADAR를 이기고 MARSONIA와 VINOGRADAR가 비기면, DINAMO는 두 팀과 승점이 같지만 알파벳 순서가 앞서므로 우승한다. MARSONIA와 VINOGRADAR의 경기가 무승부로 끝나지 않으면 그 경기의 승자가 우승한다.

우승할 방법이 전혀 없는 클럽은 ZADAR뿐이다. ZADAR가 DINAMO를 이기고 MARSONIA와 VINOGRADAR가 비기면 ZADAR는 두 팀과 승점이 같아지지만, 알파벳 순서가 뒤이므로 우승하지 못한다.

예제2

  1. 예제 1

    입력
    4
    MARSONIA 50
    VINOGRADAR 50
    DINAMO 48
    ZADAR 48
    MARSONIA – VINOGRADAR
    ZADAR – DINAMO
    
    예상 출력
    DINAMO
    MARSONIA
    VINOGRADAR
    
  2. 예제 2

    입력
    10
    DINAMO 27
    HAJDUK 27
    LOKOMOTIVA 26
    RIJEKA 26
    SPLIT 19
    ISTRA 17
    SLAVEN 12
    ZADAR 12
    DRAGOVOLJAC 7
    OSIJEK 7
    DINAMO – HAJDUK
    LOKOMOTIVA – RIJEKA
    SPLIT – ZADAR
    ISTRA – SLAVEN
    DRAGOVOLJAC - OSIJEK
    
    예상 출력
    DINAMO
    HAJDUK
    LOKOMOTIVA
    RIJEKA