QOJ.ac

QOJ

実行時間制限: 1.0 s メモリ制限: 1024 MB 満点: 100 ハック可能 ✓

#10116. CERC 牌匾

統計

在弗罗茨瓦夫举办的 CERC 2024 即将到来,所有人都忙于筹备工作。甚至连弗罗茨瓦夫的小矮人们也在帮忙!作为组委会的一员,每个小矮人都领到了一块牌子,以便大家辨认。小矮人们非常有创意,每个人都想出了一个独特的昵称,并希望将其显示在牌子上。如果一个昵称的前四个字母与小矮人名字的前四个字母相匹配(我们区分大小写),则该昵称是正确的。例如,小矮人 Mathew 可以拥有一块写着 Mathy 的牌子,但他不能拥有写着 Matty 或 MATHY 的牌子。

“邋遢鬼”小矮人负责印刷这些牌子。由于他确实很邋遢,他没有记录哪块牌子属于谁。更糟糕的是,有些牌子可能包含错误。请帮助“邋遢鬼”找出哪块牌子属于谁:你将获得所有小矮人的名字列表以及牌子上所有昵称的列表。编写一个程序,判断是否存在一种将牌子分配给名字的方案,使得每块牌子上的昵称都是对应名字的正确昵称。如果存在这样的分配方案,你的程序还应将其打印出来。

输入格式

输入的第一行包含一个整数 $N$,表示小矮人的数量。接下来的 $N$ 行,每行包含一个矮人的名字,名字是由大小写英文字母组成的字符串。

接下来的 $N$ 行,每行包含一个写在牌子上的昵称,昵称是由大小写英文字母组成的字符串。

数据范围

$1 \le N \le 100\,000$,每个名字和昵称至少包含 4 个字母,最多包含 400\,000 个字母,所有名字长度之和与所有昵称长度之和均不超过 400\,000,保证没有重复的名字和昵称。

输出格式

输出的第一行应包含一个单词——如果上述分配方案可行,则输出 YES,否则输出 NO

如果答案为 YES,则接下来的 $N$ 行应包含正确的分配方案:每行应包含小矮人的名字和分配给他的昵称,中间用单个空格隔开。如果存在多种可能的分配方案,打印其中任意一种即可。

样例

样例输入 1

4
Slopy
Mathy
Thinky
Cody
Thinky
Math
Slopppy
Codythesecond

样例输出 1

YES
Cody Codythesecond
Mathy Math
Slopy Slopppy
Thinky Thinky

样例输入 2

3
Writy
Buggy
Solvy
Bogg
Write
Solvy

样例输出 2

NO

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.