#P1748. Computer Dialogue
Computer Dialogue
本题没有可用的提交语言。
题目描述
有三台计算机通过网络连接。其中一台是服务器,另外两台是客户端。服务器上有一些文件,每个文件的名称都是唯一的。每个文件的完整名称由两部分组成:名称(name)和扩展名(extension)。两个客户端都知道服务器上所有文件的完整名称。服务器从这些文件中选出一个文件,并将该文件名称的“name”部分发送给其中一个客户端,将“extension”部分发送给另一个客户端。
然后,客户端开始通信,试图确定服务器选择的文件(即文件的完整名称)。然而,客户端的通信方式非常受限。客户端轮流发送消息给对方,但只能发送“我不知道文件的完整名称”这样的消息。如果一个客户端不知道文件的完整名称,它可以向另一个客户端发送一条消息:“我不知道文件的完整名称”。两个客户端交替发送这条消息,直到其中一个客户端知道了文件的完整名称,或者它们决定停止通信。接收文件“name”部分的客户端总是等待另一个客户端发送第一条消息。
假设你知道服务器上所有文件的完整名称(包括名称和扩展名),并且你正在监听客户端之间的对话。根据这段对话,你需要确定服务器可能选择的文件集合。这个集合中的文件称为候选文件。
输入格式
输入的第一行包含两个整数 N 和 M,用空格分隔。N(1 ≤ N ≤ 1000)是服务器上的文件数量,M(1 ≤ M ≤ 100)是客户端之间交换的消息数量。
接下来的 N 行,每行包含一个完整的文件名。完整文件名的格式类似于 MS-DOS 8.3 格式。每个完整文件名以“name.extension”的形式表示,其中“name”和“extension”部分仅包含大写字母和数字。“name”部分至少有一个字符,最多八个字符。“extension”部分最多三个字符,可能为空。如果扩展名为空,分隔点“.”可以省略。
每个完整文件名在输入文件中最多出现一次。
输出格式
输出的第一行应写入候选文件的数量(基于给定的文件集合和客户端交换的消息数量)。如果没有候选文件,则输出 0。
接下来的几行,写入所有候选文件的完整名称。每个名称应单独占一行,并且应与输入文件中的顺序和拼写完全相同。这意味着如果在输入中某个文件的分隔点“.”被省略了,那么在输出中也应省略;反之亦然。不能重复列出任何文件。
示例输入 1
19 2 LICENCE.TMP WIN32.LOG FILEID. PSTOTEXT.TXT GSVIEW32.EXE GSVIEW32.ICO GSVIEWDE.HLP LICENCE GSVIEWEN.HLP GSVW32DE.DLL FILEID.TMP GSVW32EN.DLL PSTOTXT3.DLL PSTOTXT3.EXE GSV16SPL.EXE GVWGS32.EXE ZLIB32.DLL PRINTER.INI README.TXT
示例输出 1
6 LICENCE.TMP FILEID. LICENCE FILEID.TMP PSTOTXT3.DLL PSTOTXT3.EXE
来源
东北欧 1999