Если представить исходный массив как разностный, то есть $$$b_i = a_{i+1} - a_i$$$, то тогда в массиве $$$b$$$ мы хотим найти самый длинный подотрезок, в котором первая половина состоит из 1, а вторая из -1.
Для нахождения такого максимального подотрезка будем использовать ДО, в котором будем хранить текущий ответ, максимальный префикс для ответа и максимальный суффикс.
Тогда для пересчета мы обновляем ответ, а так же проверяем, можно ли расширить префикс и суффикс.
Изменения высот — это обычные изменения в точке в ДО.