Межквартильный размах рейтингов жанра

тема: Описательная статистика · уровень: средний

Условие

В базе онлайн-кинотеатра для каждого фильма указаны жанр и пользовательский рейтинг. Рейтинг хранится целым числом в сотых долях балла: значение 845 означает рейтинг 8.45.

Для каждого жанра из запроса требуется найти межквартильный размах рейтингов фильмов этого жанра. Записи с неизвестным рейтингом NA в расчёте не участвуют.

Пусть известные рейтинги выбранного жанра после сортировки имеют вид x1, x2, ..., xm. Первый квартиль равен Q1 = x⌈m/4⌉, третий квартиль равен Q3 = x⌈3m/4⌉. Межквартильный размах определяется формулой IQR = Q3 - Q1. Если одинаковые рейтинги встречаются несколько раз, каждая такая запись учитывается отдельно и занимает отдельную позицию в отсортированном списке.

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

Формат ввода

В первой строке дано целое число n — количество записей о фильмах.

В следующих n строках даны три значения: movie_id, genre, rating. Значение rating является целым числом в сотых долях балла либо строкой NA.

В следующей строке дано целое число q — количество жанров в запросе.

В следующих q строках дано по одному названию жанра.

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

Выведите q строк. В строке с номером i выведите межквартильный размах для жанра из строки запроса с номером i.

Ответ выводится с двумя знаками после точки.

Ограничения

1 ≤ n ≤ 2000.

1 ≤ movie_id ≤ 10^9.

Длина названия жанра составляет от 3 до 12 символов. Название содержит только латинские буквы.

Известный рейтинг удовлетворяет 0 ≤ rating ≤ 1000, что соответствует значению от 0.00 до 10.00.

1 ≤ q ≤ 200.

Каждый жанр из запроса встречается среди записей хотя бы с одним известным рейтингом.

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

Куда дальше