#P1554. Tournament Brackets

Tournament Brackets

问题描述

程序员大学(PU)全年举办多项校内体育锦标赛。比赛对阵表通过磁性名牌展示在金属板上,名牌上印有参赛队伍名称。如下图所示是一个典型的对阵表。不过经常有恶作剧者将所有队伍名牌从板上取下,并按列主序(从第一轮顶部开始,向下排列,接着第二轮顶部,依此类推)整齐地成对摆放在地上,并留下挑衅字条声称"任何程序员都应该能仅凭这些信息重建完整对阵表"。您的任务是编写一个程序,根据输入的队伍名称,用ASCII字符绘制出完整的锦标赛对阵表。

特殊说明

  • 某些锦标赛可能没有足够队伍填满整个对阵表,这意味着部分队伍无需参加第一轮比赛
  • 需要根据输入数据推断哪些队伍实际参加了第一轮比赛

输入格式

  • 输入包含多组锦标赛数据
  • 每组数据以奇数nn开头(3n313 \leq n \leq 31,表示名牌总数)
  • 随后是(n+1)/2(n+1)/2行队伍配对:
    • (n1)/2(n-1)/2行:每行两个队伍名称(空格分隔),上方队伍在对阵表中位于下方队伍之上
    • 最后一行:锦标赛冠军名称
  • 队伍名称由373-7个大写字母(A-Z)组成
  • 输入以n=1n=-1结束

输出格式

对每个锦标赛:

  1. 首行显示"Tournament X"(X为锦标赛编号)
  2. 输出ASCII绘制的对阵表,要求:
    • 队伍名称左对齐,前缀1个下划线'_',后缀1+个下划线
    • 每轮宽度为该轮最长队名长度加2(前后各1个下划线)
    • 对阵间隔:
      • 第一轮:2行间隔
      • 第二轮:4行间隔
      • 第三轮:8行间隔
      • 第四轮:16行间隔
    • 非第一轮队伍行首需保留空格
    • 禁止行尾空格、纯空格行或空行
    • 仅使用三种符号:'/'、''、'_'

输入输出示例

输入

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_____/

关键要求

程序需要根据输入的队伍配对关系,重建完整的锦标赛对阵表,并通过ASCII艺术形式准确呈现比赛晋级路径和轮次结构。特别注意不同轮次之间的间隔和排版格式要求。