토너먼트 대진표

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

요약
열 우선 순서로 주어진 팀 대진과 우승팀을 바탕으로 토너먼트 대진표를 복원하고 슬래시, 역슬래시, 밑줄로 그린다.
난이도

보통10점 중 7점

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

문제

프로그래머 대학교(PU)는 해마다 여러 교내 스포츠 토너먼트를 개최한다. 출전 팀과 승자를 보여 주는 대진표는 팀 이름이 적힌 자석 표지판을 금속 판에 붙여서 게시한다. 아래는 그러한 대진표의 한 예이다.

가끔 장난꾸러기가 판에서 모든 팀 이름 표지판을 떼어 내어 바닥에 짝을 지어 늘어놓는데, 열 우선(column-major) 순서로 배열한다. 즉 1라운드의 맨 위에서 시작해 그 열을 따라 아래로 내려간 다음, 2라운드의 맨 위로 돌아가 다시 아래로 내려가는 식으로 진행한다. 그리고 이 정보만으로도 프로그래머라면 누구나 원래 대진표를 정확히 복원할 수 있어야 한다는 쪽지를 남긴다. 당신의 과제는 토너먼트 대진표의 팀 이름들을 입력받아 그 대진표를 간단한 ASCII 문자로 그려 내는 프로그램을 작성하는 것이다.

Round    Round      Round       Winner
  1        2          3

_BIG__
      \_BIG_____
_DIGS_/         \
                 \_FIGURES_
                 /         \
       _FIGURES_/           \
                             \
                              \_TIGGER_
                              /
       _TIGGER__             /
                \           /
                 \_TIGGER__/
_WIG__           /
      \_WIG_____/
_ZIG__/

한 가지 까다로운 점은, 어떤 토너먼트에는 대진표를 완전히 채울 만큼 팀이 충분하지 않을 수 있다는 것이다. 이 경우 일부 팀은 1라운드 경기를 치르지 않아도 된다(부전승). 어떤 팀이 실제로 1라운드에서 경기를 했는지는 당신이 추론해야 한다.

입력

입력은 하나 이상의 토너먼트 데이터를 담고 있다. 토너먼트는 1번부터 암묵적으로 번호가 매겨진다.

각 토너먼트는 대진표에 있는 이름 표지판의 총 개수인 양의 홀수 nn (3≤n≤313 \le n \le 31)이 적힌 한 줄로 시작한다. 그 뒤로 (n+1)/2(n + 1)/2개의 팀 대진 줄이 이어진다. 마지막 줄을 제외한 모든 줄에는 정확히 두 팀 이름이 공백 하나로 구분되어 있으며, 첫 번째 이름이 출력에서 두 번째 이름 바로 위에 놓인다. 마지막 줄에는 팀 이름이 하나만 있으며, 이는 토너먼트의 우승자이다.

모든 팀 이름은 3자 이상 7자 이하의 대문자 알파벳(A-Z)으로 이루어진다.

값이 -1인 줄 하나가 입력의 끝을 알린다.

출력

각 토너먼트에 대해 먼저 그것이 몇 번째 토너먼트인지 나타내는 줄을 출력한다: Tournament 1, Tournament 2 등. 그다음 대진표 자체를 출력한다.

팀 이름은 왼쪽 정렬하여 출력하며, 앞에 밑줄 _ 하나를 붙이고 뒤에 밑줄을 하나 이상 붙인다. 각 라운드의 너비는 그 라운드에서 가장 긴 팀 이름의 길이에 앞뒤 밑줄 하나씩을 더한 값이다. 1라운드에서 경기하는 팀은 2줄 간격으로 출력한다. 2, 3, 4라운드(대진표가 그만큼 클 경우)의 팀은 각각 4, 8, 16줄 간격으로 출력한다.

일반적인 지침과 달리, 1라운드 팀으로 시작하지 않는 줄은 공백으로 시작할 수 있고, 형식을 맞추기 위해 연속된 공백이 나타날 수도 있다. 그러나 어떤 줄도 끝에 공백이 있어서는 안 되고, 공백만으로 이루어진 줄이나 완전히 빈 줄이 있어서도 안 된다. 대진표를 그리는 데 필요한 기호는 슬래시 /, 백슬래시 \, 밑줄 _뿐이다. 이 문제에서 가능한 가장 큰 대진표는 n=31n = 31인 경우이다.

예제1

  1. 예제 1

    입력
    11
    BIG DIGS
    WIG ZIG
    BIG FIGURES
    TIGGER WIG
    FIGURES TIGGER
    TIGGER
    5
    LARGE RAGE
    ZEN RAGE
    RAGE
    31
    ANT BOA
    COW DUCK
    EEL FROG
    GOOSE HEN
    IGUANA JACKEL
    KITE LLAMA
    MOUSE NIT
    OCTOPUS PIG
    BOA COW
    FROG GOOSE
    IGUANA KITE
    MOUSE OCTOPUS
    COW GOOSE
    IGUANA OCTOPUS
    GOOSE OCTOPUS
    OCTOPUS
    -1
    
    예상 출력
    Tournament 1
    _BIG__
          \_BIG_____
    _DIGS_/         \
                     \_FIGURES_
                     /         \
           _FIGURES_/           \
                                 \
                                  \_TIGGER_
                                  /
           _TIGGER__             /
                    \           /
                     \_TIGGER__/
    _WIG__           /
          \_WIG_____/
    _ZIG__/
    Tournament 2
            _ZEN__
                  \
                   \_RAGE_
    _LARGE_        /
           \_RAGE_/
    _RAGE__/
    Tournament 3
    _ANT_____
             \_BOA_____
    _BOA_____/         \
                        \_COW_____
    _COW_____           /         \
             \_COW_____/           \
    _DUCK____/                      \
                                     \_GOOSE___
    _EEL_____                        /         \
             \_FROG____             /           \
    _FROG____/         \           /             \
                        \_GOOSE___/               \
    _GOOSE___           /                          \
             \_GOOSE___/                            \
    _HEN_____/                                       \
                                                      \_OCTOPUS_
    _IGUANA__                                         /
             \_IGUANA__                              /
    _JACKEL__/         \                            /
                        \_IGUANA__                 /
    _KITE____           /         \               /
             \_KITE____/           \             /
    _LLAMA___/                      \           /
                                     \_OCTOPUS_/
    _MOUSE___                        /
             \_MOUSE___             /
    _NIT_____/         \           /
                        \_OCTOPUS_/
    _OCTOPUS_           /
             \_OCTOPUS_/
    _PIG_____/