Частая биграмма названий страниц

тема: Текст: мешок слов и TF-IDF · уровень: средний

Условие

В журнале посещений школьного сайта для каждого посещения указан код открытой страницы. Отдельная таблица содержит названия страниц по их кодам.

Для каждого посещения, код страницы которого есть в каталоге, рассматривается название этой страницы. Если название состоит из слов w1 w2 ... wk, его биграммами называются пары соседних слов (w1, w2), (w2, w3), ..., (w(k-1), wk). Название из одного слова не даёт ни одной биграммы. Посещения с кодом, отсутствующим в каталоге, пропускаются.

Частотой биграммы (a, b) называется число её появлений среди биграмм всех рассмотренных посещений: C(a, b) = сумма по всем посещениям числа позиций i, для которых wi = a и w(i+1) = b. Одинаковые посещения и повторные открытия одной страницы учитываются отдельно. Требуется вывести биграмму с наибольшей частотой.

Если наибольшая частота достигается у нескольких биграмм, выводится лексикографически меньшая биграмма: сначала сравниваются первые слова, а при их равенстве — вторые. Округление не применяется, в ответе выводятся ровно два слова через один пробел.

Формат ввода

В первой строке записаны два целых числа n и m — число строк журнала посещений и число строк каталога страниц.

В следующих n строках записаны идентификатор посещения и код страницы через один пробел: visit_id page_code.

В следующих m строках записаны код страницы, затем один пробел и её название: page_code title. Название состоит из слов, разделённых одним пробелом.

Формат вывода

В единственной строке выводятся два слова наиболее частой биграммы через один пробел.

Ограничения

1 ≤ n, 1 ≤ m, n + m ≤ 2000.

Длина visit_id и page_code составляет от 1 до 12 символов. Идентификаторы посещений различны. Коды страниц в каталоге различны.

Название страницы содержит от 1 до 10 слов. Каждое слово содержит от 1 до 20 строчных латинских букв. Длина всей строки названия не превышает 209 символов.

Хотя бы одно посещение ссылается на страницу из каталога, название которой содержит не менее двух слов.

Решить задачу с автопроверкой на Python →

Куда дальше