提示: 欢迎访问OurACM平台。
Problem 1590 机器人足球赛

Accept: 43    Submit: 310
Time Limit: 1000 mSec    Memory Limit : 32768 KB

Problem Description

福州大学的“Overtrue队”在2007年的RoboCup China Open(机器人足球赛中国公开赛)中型组的比赛中取得了银奖。现在我们需要一个程序,用来处理机器人足球赛中的比赛结果。请你编写这样一个程序。

Input

机器人足球赛采用锦标赛的方式,每组输入数据为一个赛季中的中间状态。

本题有多组输入数据,你必须处理到EOF为止。

每组数据第一行为一个整数N (N<=80),表示参与比赛的队伍数量。

接下来有N行,每行包括一个唯一的队名。队名区分大小写,仅由字母,数字,点(“.”) 和连接符(“-”) 组成。队名的长度不超过100个字符。

第N+2行,为一个非负整数M,表示已结束的比赛场数。接下来M行,每行描述了一场比赛。每场比赛的信息包括:主场队名,空格,连接符,空格,客场队名,空格,比赛结果。其中比赛结果由数字0-9,冒号(“:”),数字0-9组成,数字表示主场队和客场队的得分。

输入数据保证所有参与比赛的队名都在给定的N个队名中,其中每场比赛的队伍均为两支不同的队伍。

Output

其中“比赛成绩表”,使用连接符(“-”), 或(“|”),加号(“+”)进行分割。输出表格包括N+1行,N+1列。左上角的格子用空格填充,第一列的其它格子填充队名全名,宽度为最长的名字的长度,(左对齐,多余位置用空格填充)。第一行为队名的前三位缩写,如果队名不足三位,队名后补空格。队名出现的顺序必须为给定队名列表的顺序。

主对角线的格子,除去第一个,其他均用”X”居中填充。除此之外,剩余的格子填充比赛结果,如两只队伍未进行比赛,则用3个空格填充。在“比赛结果”中,表格的行表示的是主场,列是客场。

“比赛排名”包含N行,每一行表示一支队伍。每行包括8列,列与列之间用1个空格分割。每一列必须“完美对齐”,即同一列中的各行都有相同的字符数。其中字符数(也就是列的宽度)取决于本列中的最长字符串的宽度。除第2列队名要求“左对齐”外,其余各列均采用“右对齐”,对齐采用空格填充。

每行8列的内容分别如下:
1. 该支队伍排名(从1开始,加1递增)和一个点号(“.”)。
2. 该支队伍队名。
3. 该支队伍参与的比赛数目。
4. 该支队伍赢得的比赛数目。
5. 该支队伍打平的比赛数目。
6. 该支队伍输掉的比赛数目。
7. 该支队伍总成绩,由三部分组成:该支队伍的总进球数,冒号(“:”),总失球数。
8. 该支队伍的总得分,记分方式:赢得3分,平得1分,输得0分。
比赛排名按以下条件排序, 优先级如下:
1. 队伍总得分,总得分高的队伍排在前面。
2. 净胜球数,即总进球数减去总失球数,净胜球多的队伍排在前面。
3. 总进球数,总进球多的队伍排在前面。
4. 胜利的场数,胜利场数多的排在前面。
5. 队伍的输入顺序,按在给定N个队名输入的先后顺序排名。

其他未明之处,请参照输出样例。

Sample Input

4 Changchun Beijing Fujian Shanghai 4 Changchun - Beijing 2:0 Shanghai - Fujian 1:1 Fujian - Changchun 1:2 Beijing - Changchun 0:0

Sample Output

RESULTS: +---------+---+---+---+---+ | |Cha|Bei|Fuj|Sha| +---------+---+---+---+---+ |Changchun| X |2:0| | | +---------+---+---+---+---+ |Beijing |0:0| X | | | +---------+---+---+---+---+ |Fujian |1:2| | X | | +---------+---+---+---+---+ |Shanghai | | |1:1| X | +---------+---+---+---+---+ STANDINGS: ---------- 1. Changchun 3 2 1 0 4:1 7 2. Shanghai 1 0 1 0 1:1 1 3. Fujian 2 0 1 1 2:3 1 4. Beijing 2 0 1 1 0:2 1

Source

福州大学第五届程序设计竞赛

Submit  Back  Status  Discuss