众所周知,XrkArul 是全宇宙最强的算法竞赛选手。有了 XrkArul 带飞,Aham 将在 ICPC 济南站躺赢,然后明年参加 EC-Final 和 World Finals。
为了理解到 XrkArul 究竟有多强,Aham 想要写一个程序通过已经结束的网络赛的排名来预测一下 27 日的区域赛中 XrkArul 将要拿金还是拿金。
Aham 认为,通过过去的最好成绩来考察一支队伍的水平能够很好的预测区域赛成绩。
现在,你有 (n + m) 条信息。
其中有 n 条网络赛记录。每条记录有 4 部分:排名,比赛名,队名,成员。其中成员数量 1 至 3 名。如果不足 3 名,后 1 名或后 2 名会以 'null' 填充。不同记录可能来自不同的比赛。
还有 m 个区域赛参赛队伍。队伍信息包含校名,成员。其中成员数量 1 至 3 名。如果不足 3 名,后 1 名或后 2 名会以 '空' 填充。
请你根据匹配规则对队伍进行排名,得到队排和校排。队排是指一个队伍在区域赛中的预期排名。校排分为学校排名和队伍的校内排名。学校排名是指将所有学校取预期排名最高的队伍进行排名。不过,现在不需要你输出校排。
匹配规则:一个区域赛参赛队伍能与一条记录匹配,当且仅当这个队伍有至少两名成员在这个记录出现,或这个队伍有一名成员在这个记录出现且这个记录只有一名成员。
参考:每个队伍取排名最好的能与之匹配的记录作为排名预测的参考。如果没有与之匹配的记录,则以 2147483647 作为排名的参考。
你需要把 m 个参赛队伍按照水平排序,以便从头一眼看出 XrkArul 有多强。同时,据 Aham 所知,EC-Final 和 World Finals 都按照学校的最强队伍的成绩来分配名额。你除了预测每支队伍在全部队伍的排名,以及在校内的排名之外,还要根据每个学校的最强队伍预测一下每个学校的排名。
Aham 需要一个准确的、严格的输出来想象宇宙最强选手 XrkArul 将如何带飞全队。所以,你需要考虑到,多个队伍的参考可能是相同的。这时,几个队伍的预期排名就是相同的。预期排名的多个队伍的输出顺序需要与输入的顺序保持一致。
第一行一个正整数 n. (n < 7000)
接下来 n 行, 每行 6 个由空格隔开的字符串, 分别表示一条网络赛记录的排名, 比赛名, 队名, 和三个成员的名字.
接下来一行一个正整数 m. (m < 900)
接下来 m 行, 每行 4 个由空格隔开的字符串, 分别表示一个区域赛队伍的学校名和三个成员的名字.
网络赛记录中如果有不足 3 人的队伍, 则队员 2 或 3 会以 'null' 填充. 区域赛记录中如果有未满 3 人的队伍, 则队员 2 或 3 会以 '空' 填充.
输入数据已经删除了队名中的空格和 '\t', 以及校名中的这两个字符.
数据中可能有重名的人. 当区域赛队伍中的一个人与网络赛队伍中的一个人一样时, 就直接匹配. 注意同一支区域赛队伍里可以有重名的人, 同一条网络赛记录里也会有重名的人. 注意我们的匹配规则是考虑区域赛队伍里有多少个人名在这个网络赛记录里出现了, 而不是反过来的.
单组输入, SampleInput 中的 Test Case 1 表示第一组样例的输入, SampleOutput 中的 Test Case 1 表示第一组样例输出, 依次类推.
m 行.
每行表示一个区域赛队伍. 参考网络赛排名后按照预期排名排序. 预期排名相同的队伍间的顺序保持与输入顺序不变.
每行分为 6 部分.
第 1 部分, 一个正整数表示预期队排. 一个队伍预期队排是指预期能战胜它的队伍数量加一. 不同队伍的预期排名可能相同.
第 2 部分, 什么也没有.
第 3 部分, 所匹配到的网络赛记录的最高排名. 这是队伍的排名的参考. 如果两支队伍的这一部分的数值一样, 那么他们的第一部分的数值也是一样的.
第 4 部分, 校名.
第 5 部分, 三个成员的名字. 顺序保持和输入区域赛队伍时的顺序一致.
第 6 部分, 'matched: ' 开头的匹配记录. 对于每次成功匹配, 匹配记录由格式是: '[被匹配的区域赛队员] matched [网络赛名] [网络赛队名]; '
注意:
第 2 部分什么也没有. 所以第 1 部分跟第 3 部分之间有 2 个空格.
第 6 部分以 'matched: ' 开头. 注意这里有冒号. 后面的每条匹配记录内有一个 matched 分割区域赛队员和网络赛队伍. 这里的 matched 后没有冒号.
第 6 部分的匹配记录格式是引号内的内容, 不包含引号. 不要输出引号.
第 6 部分中的多条匹配记录之间有空格. 行末有空格. 即每个匹配记录以分号结尾, 每个分号后面都有空格.
第 6 部分的匹配记录的格式中的队员顺序按照区域赛队伍中的顺序. 在该次匹配中没有被匹配的队员不在匹配记录上出现.
最后一行后面有空行.
本题为单组数据, SampleInput 中的 Test Case 1 表示第一组样例的输入, SampleOutput 中的 Test Case 1 表示第一组样例输出, 依次类推.
空格位置:
每部分之间有空格.
第 6 部分以 'matched: ' 开始. 即使没有匹配记录也会有这个 'matched: '. 注意 'matched: ' 这个字符串以空格结尾.
第 6 部分如果有匹配记录就会有分号. 每条记录的最后都有一个分号. 每个分号后面都是有空格的.
Test Case 1:
3 1 ccpc 队伍1 A B C 2 ccpc 队伍2 D E F 1 icpc1 队伍2 D E null 1 学校1 F E DTest Case 2:
3 1 ccpc 队伍1 A B C 2 ccpc 队伍2 D E F 1 icpc1 队伍2 D null null 1 学校1 F E DTest Case 3:
3 1 ccpc 队伍1 A B C 2 ccpc 队伍2 D E F 1 icpc1 队伍2 D G null 1 学校1 F E DTest Case 4:
3 1 ccpc 队伍1 A B C 2 ccpc 队伍2 D E F 1 icpc1 队伍2 D G null 2 学校1 D G E 学校1 A B CTest Case 5:
3 1 ccpc 队伍1 A B C 2 ccpc 队伍2 D E F 1 icpc1 队伍2 D G null 2 学校1 D G E 学校2 A B CTest Case 6:
https://pastebin.ubuntu.com/p/RBF3rhDnrF
Test Case 1:
1 1 学校1 F E D matched: F E D matched ccpc 队伍2; E D matched icpc1 队伍2;Test Case 2:
1 1 学校1 F E D matched: F E D matched ccpc 队伍2; D matched icpc1 队伍2Test Case 3:
1 2 学校1 F E D matched: F E D matched ccpc 队伍2;Test Case 4:
1 1 学校1 D G E matched: D E matched ccpc 队伍2; D G matched icpc1 队伍2; 1 1 学校1 A B C matched: A B C matched ccpc 队伍1;Test Case 5:
1 1 学校1 D G E matched: D E matched ccpc 队伍2; D G matched icpc1 队伍2; 1 1 学校2 A B C matched: A B C matched ccpc 队伍1;Test Case 6:
https://pastebin.ubuntu.com/p/q7cSPpVFvn/Note 样例 1 中输出匹配信息时的顺序是与输入区域赛队伍时的队员顺序一致的, 跟网络赛记录里的可以不一样. 样例 2 中的队伍 2 在网络赛 icpc1 里是单挑, 所以区域赛 F, E, D 组成的队伍可以通过队员 D 匹配到该记录, 于是区域赛中该队伍在网络赛中的最高排名是 1. 样例 3 中的队伍 2 在网络赛 icpc1 里不是单挑, 于是要求一个区域赛队伍中有 2 人在这条记录里出现才能匹配到. 所以唯一的一支区域赛队伍的网络赛最高排名只能取 ccpc 中的第二名.