在使用“软件即服务”(software-as-a-service)产品时,用户经常会遇到匹配不同服务所存储记录的问题,并需要确定它们是否指向同一个实体(个人、账户、订单等)。ICPC 也不例外。虽然每位参赛者在中央 ICPC 注册系统中都有记录,但可能还会使用额外的“外部”应用程序来收集和处理中央系统未提供的功能信息。
一旦使用了“外部”应用程序,就有必要匹配来自两个系统的条目。遗憾的是,尽管有明确的指导,有时仍不清楚记录是否对应同一个人。主要的不匹配类型如下:
- 电子邮件地址不匹配。这可能是由于拼写错误(例如将
.edu写成.eud),或者是参赛者在中央 ICPC 系统和外部系统中使用了不同的电子邮件地址。 - 姓名不完全匹配。这可能是由于输入错误,或是在法定姓名和昵称之间的使用差异。
你的团队需要编写一个程序,读取来自 ICPC 系统和外部系统的名单,并确定每个系统中哪些记录在另一个系统中找不到匹配项。如果两个条目的电子邮件地址完全匹配,或者姓氏和名字完全匹配,则认为它们是匹配的。
输入格式
程序的输入是两份包含姓名和电子邮件地址的记录列表。每条记录由名字、姓氏和电子邮件地址组成,每行一条,各字段之间用制表符(tab)分隔。第一份列表是来自中央 ICPC 注册系统的记录,该列表以一个空行结束。第二份列表是来自外部应用程序的记录,该列表以文件结束符(EOF)结束。(这些列表仅作为测试数据,并非真实的 ICPC 数据。)
电子邮件地址长度不超过 64 个字符。电子邮件地址由大小写英文字母、数字以及特殊字符(@、下划线、连字符和句点)组成。电子邮件地址不能以特殊字符开头。
名字和姓氏长度不超过 24 个字符。姓名由大小写英文字母和连字符组成。姓名不能以连字符开头。
每个输入列表包含至少 1 条且不超过 2,000 条记录。电子邮件地址以及(名字,姓氏)配对在每个列表内都是唯一的。
输出格式
你的程序需要打印出两份列表中无法在另一份列表中找到匹配项的记录。程序应首先打印中央 ICPC 注册系统中无法匹配的记录,每行一条。每行应包含字母“I”、一个空格、电子邮件地址、一个空格、姓氏、一个空格和名字。这些记录应按电子邮件地址的字典序打印。电子邮件地址、姓氏和名字的打印格式应与输入中的完全一致。打印完所有此类记录后,应以相同的方式打印外部应用程序中无法匹配的记录,不同之处在于每行应以字母“O”开头。
所有记录的匹配比较和排序均忽略大小写。
如果两个系统中的所有记录在另一个系统中都有匹配项,你的程序应仅打印一行包含字符串 “No mismatches.” 的内容。
样例
样例输入 1
Bob Smith [email protected] Randy Nguyen [email protected] Betty Jones [email protected] Sallie Li [email protected] Robert Smith [email protected] Quan Nguyen [email protected] Betty Jones [email protected] Sarah Leung [email protected]
样例输出 1
I [email protected] Smith Bob I [email protected] Nguyen Randy I [email protected] Li Sallie O [email protected] Smith Robert O [email protected] Nguyen Quan O [email protected] Leung Sarah
样例输入 2
Camellia Woodley [email protected] Leroy Thomas [email protected] Freya Campbell [email protected] Eduardo Allen [email protected] Danny West [email protected] Ed Allen [email protected] Daniel West [email protected] camellia woodley [email protected] Leroy Thomas [email protected] freya Campbell [email protected]
样例输出 2
No mismatches.