Вероятность победы для дебютов

тема: Вероятность и матожидание · уровень: средний

Условие

В таблице собраны результаты партий шахматного турнира. Для каждой партии указан код дебюта и результат с точки зрения игрока, который анализируется: W означает победу, D — ничью, L — поражение.

Для кода дебюта x требуется вычислить условную вероятность победы при условии, что партия была сыграна с этим дебютом. Она определяется формулой

\[ P(W\mid x)=\frac{\text{число строк с дебютом }x\text{ и результатом }W}{\text{число строк с дебютом }x}. \]

В конце входных данных приведён список запросов с кодами дебютов. Для каждого запроса требуется вывести соответствующую условную вероятность. Если дебют из запроса не встречается среди партий, его вероятность считается равной 0.000.

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

Формат ввода

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

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

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

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

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

Выведите q строк. В строке с номером i выведите условную вероятность победы для дебюта из запроса с номером i.

Каждое число выводится ровно с тремя знаками после десятичной точки. Значение округляется до трёх знаков по правилам математического округления: при ровно половинном следующем разряде округление производится в большую сторону.

Ограничения

1 ≤ n ≤ 2000.

1 ≤ q ≤ 2000.

Код дебюта — строка длиной от 1 до 12, состоящая из строчных латинских букв, цифр и символа -.

Результат партии — один из символов W, D, L.

Пропусков в строках с партиями нет.

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

Куда дальше