Это свободное продолжение моей предыдущей задачи по построению графиков .
Фон
Эксцентричный художник нанял вас, чтобы оценить структурную целостность его скульптур. Он создает свои произведения искусства, взяв кучу кубовидных магнитов и бросая их один за другим в огромную кучу. Чтобы лучше проанализировать его метод, мы используем следующую двумерную модель. Мы начинаем с пустого этажа и опускаем магнит #
по любой целочисленной координате, скажем 0
:
|
v
#
===============
0
Если уронить другой магнит, он окажется 0
поверх предыдущего:
|
v
#
#
===============
0
Теперь, давайте бросим еще один магнит в 0
, а затем один в 1
:
|
#v
##
#
===============
0
Как видно выше, падающий магнит прилипает ко второму проходящему магниту (первый просто замедляет его). Второй магнит не обязательно должен быть непосредственно под первым, а магнит с обеих сторон по-прежнему считается одним магнитом:
# #
##|##
# v #
### #
# #
===============
0
Художники хотят, чтобы вы вычислили максимальный вертикальный зазор в окончательной скульптуре, то есть максимальное количество пустых пространств между двумя магнитами в одном столбце или магнитом и землей под ним. На изображении выше это число будет 3 (в столбце 2
).
вход
Список целых чисел, представляющих координаты, куда художник бросает свои магниты, читается слева направо. Вы можете предположить, что координаты удовлетворяют -1024 <= i < 1024
и что длина списка не более 1024
, если это помогает.
Выход
Максимальный вертикальный разрыв в итоговой скульптуре. Пустая скульптура имеет пробел -1
, и этот случай должен быть включен, так как наш скульптор - дадаист.
Дополнительные правила
Вы можете дать функцию или полную программу. Самый короткий счетчик байтов выигрывает, и стандартные лазейки запрещены. Код с пояснениями предпочтителен.
Контрольные примеры
[] -> -1
[0,2,1] -> 0
[0,0,0,0,0,1,-1] -> 3
[0,0,0,0,0,1,1,1,2] -> 4
[1,1,2,2,2,2,2,2,1] -> 2
[1,1,2,2,2,2,2,2,1,0,1,0] -> 2
[1,2,1,2,1,2,1,2,2,2,2,1,0] -> 3
[-1,-1,-1,1,1,1,0] -> 1
[-1,-1,-1,-1,2,2,1,1,2,2,2,1,0] -> 2
[-2,-2,-2,-1,-1,-1,0,0,0,1,1,1,2,2,2,3,3,4,4,5,5,5,6] -> 6