Ближайший автор отзыва

тема: Расстояния и kNN · уровень: базовый

Условие

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

Строки второй таблицы могут идти в другом порядке. Номер отзыва является ключом: показатели активности нужно сопоставить с отзывом с таким же номером.

Для нового пользователя известны число дней использования приложения и число обращений в поддержку. Требуется найти номер отзыва пользователя, наиболее близкого к новому по этим двум показателям. Используется евклидово расстояние: для показателей (a, b) и (x, y) оно равно sqrt((a - x)^2 + (b - y)^2).

Если у пользователя в таблице активности хотя бы один показатель равен -1, показатель считается пропущенным, и такой пользователь не участвует в поиске. Гарантируется, что хотя бы у одного пользователя оба показателя известны. Если наименьшее расстояние достигается у нескольких отзывов, нужно вывести наименьший номер отзыва.

Формат ввода

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

В следующих n строках дана первая таблица: два целых числа review_id и rating — номер отзыва и оценка пользователя.

В следующих n строках дана вторая таблица: три целых числа review_id, days и tickets — номер отзыва, число дней использования приложения и число обращений в поддержку. Строки этой таблицы могут быть переставлены.

В последней строке даны два целых числа new_days и new_tickets — показатели нового пользователя.

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

Выведите одно целое число — номер ближайшего отзыва.

Округление не применяется, так как ответ является целым номером отзыва.

Ограничения

1 <= n <= 1000.

1 <= review_id <= 10^9, все номера отзывов в первой таблице различны.

1 <= rating <= 5.

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

days и tickets равны -1 либо целому числу от 0 до 10^6.

0 <= new_days, new_tickets <= 10^6.

Хотя бы в одной строке второй таблицы оба значения days и tickets не равны -1.

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

Куда дальше