SP21096 WORDCNT2 - Word Counting 2
题目描述
“我曾经既恨过文字,也爱过它们,我希望我正确地使用了它们。” —— 马库斯·苏萨克
我们也喜欢文字,对吧?不过,作为代码诗人,我们用另一种方式热爱文字。要不,我们来数一数这些单词怎么样?没错,数单词是一件好事,并且在计算机科学中具有广泛的应用。尽管有时计数听上去有些无聊,但通过计数,我们能发现很多隐藏的知识。比如,从大量文档中找出最常见的单词,进而可以用来对这些文档进行分类。
请放心!我们现在不需要处理大量的文档。实际上,在这个极度忙碌的世界里,离线数据处理算法日益过时。相比大文件中的单词,我们现在更关心的是实时的单词流。
这个想法很简单:你的程序将不停地从一个流中接收到新单词,但由于存储空间有限,你的程序只能记住最新的 $K$ 个单词。因此,当第 $(K+1)$ 个单词到达时,你的程序会遗忘第 1 个单词;当第 $(K+2)$ 个单词到达时,你的程序会遗忘第 2 个单词,依此类推。
我们希望你在每次有新单词到达时,找出当前最新的 $K$ 个单词中出现频率最高的一个。如果有多个单词的出现次数相同,则输出字典序最小的那个。
输入格式
输入包含多行,每行一个单词。每个单词都是由小写字母组成,长度不超过 $50$ 个字符。输入以 EOF 结束。
输出格式
对于每个新单词,输出当前最新 $K$ 个单词中最频繁出现的单词。如果有多个单词的出现次数相同,输出字典序最小的那个。
说明/提示
- $1 \le K \le 10^5$
- 总共的单词数不超过 $10^6$ 个。
**本翻译由 AI 自动生成**