Наибольшая просадка заявок провайдера

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

Условие

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

Для каждого дня с известным числом заявок x_i определяется кумулятивный максимум M_i: это наибольшее известное число заявок среди дней с номерами от 1 до i включительно. Пропущенные значения не участвуют в вычислении максимума.

Относительной просадкой в день i называется величина d_i = 100 * (M_i - x_i) / M_i процентов. Она вычисляется только для дней с известным x_i и положительным M_i. Требуется найти наибольшую относительную просадку за весь период.

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

Формат ввода

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

В следующих n строках записаны два значения: номер дня day_i и число заявок requests_i. Значение requests_i равно целому неотрицательному числу или символу -, если данные за этот день отсутствуют.

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

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

Ограничения

1 <= n <= 4000.

1 <= day_i <= 4000, номера дней во входе строго возрастают.

Если значение requests_i не равно -, то 0 <= requests_i <= 1000000.

Хотя бы в одной строке указано положительное число заявок. Длина каждого номера дня не превышает 4 символов, длина значения заявок не превышает 7 символов.

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

Куда дальше