Шаг с наибольшим ростом потерь

тема: Градиентный шаг · уровень: продвинутый

Условие

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

В журнале каждому измерению соответствуют номер шага обучения s и целое число q. Число q равно значению потерь, умноженному на 1000. Все значения уже записаны в таком виде, поэтому вычисления с вещественными числами не требуются.

Для каждой строки, кроме первой, определяется изменение потерь: d_i = q_i - q_(i-1). Требуется найти шаг s_i, для которого d_i максимально и строго положительно. Если положительных изменений нет, необходимо вывести шаг 0.

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

Формат ввода

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

В следующих n строках даны два целых числа: s_i и q_i — номер шага обучения и значение потерь, умноженное на 1000.

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

Выведите два значения через пробел: слово STEP и номер найденного шага. Если потери ни разу не выросли, выведите STEP 0.

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

Ограничения

1 ≤ n ≤ 4000.

1 ≤ s_i ≤ 10^9.

Номера шагов строго возрастают в порядке входных данных.

0 ≤ q_i ≤ 10^9.

Пропусков в журнале нет: каждая из n строк содержит оба целых значения.

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

Куда дальше