Максимум среднего числа выдач

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

Условие

Библиотека фиксирует число выдач книг за каждый день наблюдения. Иногда данные за день не поступают: тогда вместо числа выдач записано значение -1.

Для каждого запроса задана длина окна k. Рассматриваются все подряд идущие отрезки из k дней, в которых нет пропущенных данных. Для такого отрезка со значениями x_1, x_2, ..., x_k вычисляется скользящее среднее

(x_1 + x_2 + ... + x_k) / k.

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

При равенстве наибольших значений выбирается окно, которое начинается раньше, хотя в выводе печатается только значение среднего.

Формат ввода

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

В следующих n строках дано по одному целому числу a_i — число выдач в i-й день или -1, если данные за этот день отсутствуют.

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

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

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

Выведите q строк. В строке с номером j выведите наибольшее скользящее среднее для запроса с номером j.

Каждое значение выводится ровно с двумя знаками после точки. Округление выполняется по правилу: если третья цифра после точки равна 5 или больше, вторая цифра увеличивается на 1.

Ограничения

1 ≤ n ≤ 2000.

-1 ≤ a_i ≤ 10000.

1 ≤ q ≤ 2000.

1 ≤ k ≤ n.

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

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

Куда дальше