Перцентиль оценок мобильного приложения

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

Условие

В сервисе отзывов о мобильном приложении каждая опубликованная оценка имеет значение от 1 до 5. Иногда пользователь оставляет текстовый отзыв, но не выставляет оценку. Такая запись обозначается словом NA.

Для отчёта требуется найти несколько перцентилей оценок методом ближайшего ранга. Пропуски NA не участвуют в расчёте. Пусть после удаления пропусков осталось m оценок, а их значения после сортировки по неубыванию равны a_1, a_2, ..., a_m.

Для параметра p перцентиль ближайшего ранга определяется формулой P_p = a_r, где r = ceil(p · m / 100). В конце входа задан один или несколько параметров p; для каждого из них требуется вывести соответствующий перцентиль. При равенстве оценок каждая повторяющаяся оценка считается отдельным элементом отсортированного списка и занимает отдельный ранг.

Гарантируется, что среди записей есть хотя бы одна оценка, не равная NA. Округление результата не выполняется, так как результатом является целая оценка от 1 до 5.

Формат ввода

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

В следующих n строках дано по одному значению review_rating: целое число от 1 до 5 или строка NA.

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

В следующих q строках дано по одному целому числу p — параметру перцентиля в процентах.

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

Выведите q строк. В строке с номером i выведите целую оценку, равную перцентилю ближайшего ранга для i-го запроса.

Ограничения

1 ≤ n ≤ 2000.

Каждая строка review_rating имеет длину от 1 до 2 символов и содержит либо целое число от 1 до 5, либо NA.

Количество оценок, отличных от NA, не меньше 1.

1 ≤ q ≤ 100.

1 ≤ p ≤ 100.

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

Куда дальше