ГлавнаяСборникиТурнирыРазделыФорумыУчастникиПечатьПомощьО системе

Разделы > 007. Двумерные массивы > задача:


Рекомендательная система

Задачи раздела

• Где условие?
• Идеальное расписание
• Коней много не бывает
• Конец света
• Макс и перекраска стены
• Максимальный элемент матрицы
• Наилучший участок
• Побочная диагональ
• Рекомендательная система
• Самые используемые страницы
• Сапёр
• Симметричная ли матрица?
• Странности в метеосводке
• Суммы в строках и столбцах
• Транспонирование матрицы - 1
• Университетская задача
• Шифровальная решётка

Обратная связь

Если у вас есть предложения или пожелания по работе Contester, посетите форум сайта www.contester.ru.

Лимит времени 2000/2000/2000/2000 мс. Лимит памяти 65536/65536/65536/65536 Кб.

Рекомендательная система
Рекомендательная система
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

А знаете ли вы, как работают рекомендательные системы? Если нет, то эта задача будет для вас своеобразным введением в данную тему.

Представим, что мы разрабатываем сервис для рекомендации фильмов. Пользователи, просмотревшие некоторый фильм, ставят ему оценку — «Нравится» или «Не нравится».

Пусть теперь некоторый пользователь хочет, чтобы ему посоветовали ещё не просмотренный фильм, который ему наверняка понравится. Попробуем найти пользователей с похожими вкусами и предложить то, что понравилось им.

Более формально, определим коэффициент близости двух пользователей как сумму количества фильмов, которые понравились им обоим, количества фильмов, которые не понравились им обоим, а также количества фильмов, которые они оба ещё не смотрели. Рассчитаем коэффициенты близости для всех пользователей (по отношению к тому пользователю, которому нужно выдать рекомендацию).

Теперь определим рейтинг фильма: каждая положительная оценка увеличивает рейтинг на коэффициент близости того пользователя, который её поставил, а каждая отрицательная оценка уменьшает рейтинг на коэффициент близости того пользователя, который её поставил. Рассчитаем рейтинг для всех непросмотренных фильмов и выведем в качестве рекомендации тот фильм, который имеет наибольшее значение рейтинга.

Сможете ли вы воплотить в жизнь описанный метод получения рекомендаций?

Входные данные

Первая строка содержит целые числа N и M (1 ≤ N, M ≤ 1000) — количество пользователей и фильмов в базе данных соответственно.

Следующие N строк описывают оценки пользователей. i-я из них содержит M символов, j-й из которых описывает оценку j-го фильма i-м пользователем: 'V', если фильм понравился, 'X', если фильм не понравился, либо '.', если фильм не просмотрен.

Гарантируется, что первый пользователь просмотрел не все фильмы.

Выходные данные

Выведите номер фильма, рекомендуемого первому пользователю. Если подходящих фильмов несколько, выведите номера каждого из них в возрастающем порядке.

Фильмы нумеруются от 1 до M в порядке описания во входных данных.

Примеры

Входные данные
5 4
V...
..VX
XXX.
VX.X
VVV.
Выходные данные
3 
Входные данные
3 5
.X..V
.X.V.
..V.V
Выходные данные
3 4 

Для отправки решений необходимо выполнить вход.

www.contester.ru