Самый длинный рост выдачи корма

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

Условие

В зоопарке для каждой запланированной выдачи корма создаётся запись с идентификатором выдачи. Строки первой таблицы расположены в хронологическом порядке.

Во второй таблице хранятся отчёты сотрудников о фактически выданном корме. Отчёт сопоставляется с запланированной выдачей по идентификатору. Часть отчётов может отсутствовать.

Нужно определить длину самого длинного непрерывного участка запланированных выдач, для которого отчёты есть у всех выдач, а масса фактически выданного корма не убывает.

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

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

Ответ является целым числом, дробная часть отсутствует.

Формат ввода

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

В следующих n строках находится первая таблица. Каждая строка содержит один целый идентификатор feeding_id запланированной выдачи. Порядок этих строк задаёт хронологический порядок.

В следующих m строках находится вторая таблица. Каждая строка содержит два целых числа: feeding_id и food_grams, где food_grams — фактически выданная масса корма в граммах. Строки второй таблицы могут идти в любом порядке.

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

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

Ограничения

1 <= n <= 1000.

0 <= m <= n.

n + m <= 2000.

1 <= feeding_id <= 10^9.

0 <= food_grams <= 50000.

Идентификаторы в первой таблице попарно различны. Идентификаторы во второй таблице попарно различны. Каждый идентификатор второй таблицы присутствует в первой таблице.

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

Куда дальше