Рост поездок на станциях велопроката

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

Условие

Городской велопрокат хранит дневные сводки по станциям. В каждой сводке указано число поездок, начавшихся на станции в этот день.

Запись со значением -1 означает, что данные станции за этот день не поступили. Такая запись не может входить в участок и разрывает его.

Для каждой станции из запроса рассматривается последовательность её записей в порядке входа. Требуется найти длину самого длинного непрерывного участка корректных значений, на котором число поездок не убывает. Для значений участка x_l, x_{l+1}, ..., x_r должно выполняться x_i <= x_{i+1} для всех l <= i < r. Искомая длина равна максимальному числу элементов в таком участке. Если у станции нет ни одной корректной записи, её ответ равен 0.

Если максимальная длина достигается на нескольких участках, выводится только эта общая длина. Равные соседние значения входят в один участок, так как неубывание допускает равенство.

Формат ввода

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

В следующих n строках содержатся три целых числа day, station_id, rides: номер дня, идентификатор станции и число поездок. Строки упорядочены по неубыванию day. Для одной станции не бывает двух строк с одинаковым номером дня.

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

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

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

Требуется вывести q целых чисел, по одному в строке. i-е число равно длине самого длинного участка неубывания для i-й станции из запроса.

Округление не требуется: каждое значение выводится как целое число.

Ограничения

1 <= n <= 2000.

1 <= day <= 366.

1 <= station_id <= 100.

rides = -1 или 0 <= rides <= 5000.

1 <= q <= 20.

Идентификатор станции в запросе удовлетворяет 1 <= station_id <= 100 и может не встречаться среди сводок.

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

Куда дальше