#B1505. 吃饭大赛总决赛

吃饭大赛总决赛

【题目描述】

共有 mm 场比赛,比赛编号为 11 至 mm,每场比赛至多有 tt 支队伍 参赛。现在给出 nn 条比赛排名记录,每条记录表示一支队伍在某场比赛中的 成绩。

每条记录包含队伍名称和三个猪队员的名字、比赛编号以及队伍排名。即使两条记录中的队伍名称和队员名字完全相同,也视为两支不同的队伍记录。

一支队伍可以晋级至吃饭大赛总决赛,当且仅当这支队伍的三个猪队员当前都还没有晋级。

接下来最多进行 kk 次操作。每次操作中:

  • 如果不存在可以晋级的队伍,则立即停止;
  • 否则,在所有当前可以晋级的队伍中,选择排名最小的队伍;
  • 如果有多支队伍的排名相同,则选择比赛编号最小的队伍;
  • 选中的队伍晋级,并将它的三个猪队员标记为已经晋级。

请输出最终晋级的队伍数量,以及每支晋级队伍的名称和三个猪队员名字。


【输入描述】

第一行输入四个整数 n,m,t,kn,m,t,k,分别表示排名记录条数、比赛场数、每场比赛 最多参赛的队伍数和晋级名额数量。

接下来 nn 行,每行输入四个字符串和两个正整数 s0,s1,s2,s3,id,rs_0,s_1,s_2,s_3,id,r,分别表示队伍名称、三名猪队员的名字、比赛编号 和队伍排名。

保证:

  • 1≤k≤10001\le k\le1000;
  • 1≤id≤m≤1001\le id\le m\le100;
  • 1≤r≤t≤1001\le r\le t\le100;
  • 1≤n≤m×t1\le n\le m\times t;
  • 所有字符串长度不超过 1010,且只包含小写英文字母;
  • 每支队伍的三个猪队员互不相同,且输入时三个队员名字按字典序递增;
  • 不同队伍的队伍名称互不相同;
  • 同一场比赛中,所有队伍排名互不相同;
  • 同一场比赛中,所有队伍的猪队员互不相同;
  • 如果某场比赛存在排名为 rr 的队伍(r≠1r\ne1),则该场比赛也存在排名为 r−1r-1 的队伍;
  • 每条输入记录互不相同。

【输出描述】

第一行输出一个整数 cc,表示最终晋级的队伍数量。

接下来输出 cc 行,每行输出四个字符串,依次表示晋级队伍名称和三个猪队员 的名字。猪队员名字必须按照字典序递增输出。

本题采用 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 k=1k=1
2 ~ 3 20 m=1m=1
4 ~ 5 t=1t=1
6 ~ 7 每只猪只参加一场比赛
8 ~ 10 30 无特殊性质