小红书推荐算法
题号:NC291310
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

我们假定一个用户搜索的关键词是他感兴趣的,现在请你基于这个前提设计一个小红书购物的推荐算法。
该算法的核心思想如下:首先给定一个商品清单,其中有每个商品所包含的关键词属性,然后给出用户最近搜索过的一些关键词,请你将包含用户搜索过的更多关键词的商品排在用户目录的前面。
对于包含关键词数量相同的商品,我们按默认顺序排序,也就是说按输入给定的顺序优先级。

输入描述:

第一行输入一个正整数n,q,代表商品数量、用户搜索的关键词数量。
第二行输入q个互不相同的、仅由小写字母组成的字符串,代表用户搜索过的关键词。
接下来的2*n行,每两行描述一个商品。
第一行输入一个仅由小写字母组成的字符串name和一个正整数m_i,代表商品的名称和商品包含的关键词属性数量。
第二行输入m_i个互不相同的、仅由小写字母组成的字符串,代表每个商品的属性。
1\leq n,q \leq 30000
所有的m_i之和不超过30000
保证所有字符串长度不超过 20。所有商品的名称互不相同。

输出描述:

输出n行,每行一个字符串,代表用户主页中显示的商品名称。
示例1

输入

复制
2 5
red book game music sigma
mozart 3
book classic music
arcaea 4
red music game hard

输出

复制
arcaea
mozart

说明

arcaea 这个商品包含了用户搜索的 3 个关键词,而 mozart 只包含了 2 个。