#B1505. 吃饭大赛总决赛
吃饭大赛总决赛
【题目描述】
共有 场比赛,比赛编号为 至 ,每场比赛至多有 支队伍 参赛。现在给出 条比赛排名记录,每条记录表示一支队伍在某场比赛中的 成绩。
每条记录包含队伍名称和三个猪队员的名字、比赛编号以及队伍排名。即使两条记录中的队伍名称和队员名字完全相同,也视为两支不同的队伍记录。
一支队伍可以晋级至吃饭大赛总决赛,当且仅当这支队伍的三个猪队员当前都还没有晋级。
接下来最多进行 次操作。每次操作中:
- 如果不存在可以晋级的队伍,则立即停止;
- 否则,在所有当前可以晋级的队伍中,选择排名最小的队伍;
- 如果有多支队伍的排名相同,则选择比赛编号最小的队伍;
- 选中的队伍晋级,并将它的三个猪队员标记为已经晋级。
请输出最终晋级的队伍数量,以及每支晋级队伍的名称和三个猪队员名字。
【输入描述】
第一行输入四个整数 ,分别表示排名记录条数、比赛场数、每场比赛 最多参赛的队伍数和晋级名额数量。
接下来 行,每行输入四个字符串和两个正整数 ,分别表示队伍名称、三名猪队员的名字、比赛编号 和队伍排名。
保证:
- ;
- ;
- ;
- ;
- 所有字符串长度不超过 ,且只包含小写英文字母;
- 每支队伍的三个猪队员互不相同,且输入时三个队员名字按字典序递增;
- 不同队伍的队伍名称互不相同;
- 同一场比赛中,所有队伍排名互不相同;
- 同一场比赛中,所有队伍的猪队员互不相同;
- 如果某场比赛存在排名为 的队伍(),则该场比赛也存在排名为 的队伍;
- 每条输入记录互不相同。
【输出描述】
第一行输出一个整数 ,表示最终晋级的队伍数量。
接下来输出 行,每行输出四个字符串,依次表示晋级队伍名称和三个猪队员 的名字。猪队员名字必须按照字典序递增输出。
本题采用 Special Judge,晋级队伍的输出顺序任意。
【样例 1】
【样例 1 输入】
4 2 2 3
quntongtai fr fusu woruo 2 1
sdutcs wtz ysl zay 1 2
longname dx fr woruo 1 1
longname booot boot bot 2 2
【样例 1 输出】
3
longname dx fr woruo
sdutcs wtz ysl zay
longname booot boot bot
【样例 1 解释】
两场比赛的第一名分别是 longname(dx, fr, woruo) 和
quntongtai(fr, fusu, woruo)。二者的排名相同,因此比较比赛编号,先选择
比赛 1 的 longname。
选择该队伍后,fr 和 woruo 已经晋级,quntongtai 不再满足“三名猪
队员当前都未晋级”,因此不能晋级。
接下来两场比赛的第二名均可晋级,比赛 1 的 sdutcs 与比赛 2 的
longname(booot, boot, bot) 排名相同,先选择比赛 1 的 sdutcs,最后选择
比赛 2 的 longname,共三支队伍晋级。
【数据规模与约定】
| 测试点编号 | 分数 | 特殊性质 |
|---|---|---|
1 |
10 | |
2 ~ 3 |
20 | |
4 ~ 5 |
||
6 ~ 7 |
每只猪只参加一场比赛 | |
8 ~ 10 |
30 | 无特殊性质 |