P13857 [SWERC 2020] Gratitude

题目描述

:::align{center} ![](https://espresso.codeforces.com/1d363717aaf4e8091a4ead169bbb804adaf001d8.png) ::: Ben 听说了 Emmons 和 McCullough 的研究,该研究表明刻意练习感恩能对人的幸福感产生持久影响。由于他也想变得快乐,所以他决定在每天结束时回顾过去的一天,并写下三件他感激的事情,每行一件。在坚持这项练习 $N$ 天后,他很好奇想知道哪些事物在他的清单中出现得最频繁。请帮助 Ben 找出他最常感激的 $K$ 件事物。

输入格式

输入的第一行包含两个以空格分隔的整数 $N$ 和 $K$。随后是 $3N$ 行,包含 Ben 在 $N$ 天中的记录。你可以假设对应同一天的三行中没有重复项。也就是说,如果你将输入划分为 $N$ 个连续 3 行的块,则每个块中不会包含两个相同的行。

输出格式

输出应代表 Ben 感激的事物列表,按在 Ben 清单中出现的频率排序(出现次数最多的项排在最前面)。如果两个项频率相同,则最近出现的项应排在前面。也就是说,如果出现次数相同,则最后出现在输入中较晚位置的项在输出中应排在较前的位置。最后,如果 Ben 的列表中有超过 $K$ 个不同的项,你的输出应只包含前 $K$ 个项(根据要求的顺序)。

说明/提示

#### 限制条件 - $1 \le K \le 3N \le 100,000$。 - 每个输入行最多包含 $50$ 个 (ASCII) 字符。 #### 样例解释 1 $\texttt{Good food}$ 是 Ben 列表中唯一出现两次的项目,因此它应在输出中排在第一位。其他所有项目在输入中出现一次,但 $\texttt{Being healthy}$ 因出现时间最近而优先。 #### 样例解释 2 这里 Ben 感激的不同项目只有 $5$ 个,因此输出只有 $5$ 行。在此列表中,$\texttt{Good food}$ 在输出中排在第一,因为它在输入中出现了两次,而其他项目则按在 Ben 列表中最后出现的位置排序。