Esta é uma continuação frouxa do meu desafio anterior na construção de gráficos .
fundo
Um artista excêntrico contratou você para estimar a integridade estrutural de suas esculturas. Ele cria suas obras de arte pegando um monte de ímãs em forma de cubo e largando-os um a um em uma pilha enorme. Para analisar melhor seu método, usamos o seguinte modelo bidimensional. Começamos com um piso vazio e soltamos um ímã #
em qualquer coordenada inteira, digamos 0
:
|
v
#
===============
0
Se outro ímã cair 0
, ele termina em cima do anterior:
|
v
#
#
===============
0
Agora, vamos soltar mais um ímã em 0
e depois um em 1
:
|
#v
##
#
===============
0
Como visto acima, um ímã em queda adere ao segundo ímã por onde passa (o primeiro apenas o retarda). O segundo ímã não precisa estar diretamente abaixo do primeiro, e um ímã de ambos os lados ainda conta como um ímã:
# #
##|##
# v #
### #
# #
===============
0
Os artistas querem que você calcule o intervalo vertical máximo na escultura final, ou seja, o número máximo de espaços vazios entre dois ímãs na mesma coluna ou um ímã e o solo abaixo dela. Na figura acima, esse número seria 3 (na coluna 2
).
Entrada
Uma lista de números inteiros, representando as coordenadas em que o artista coloca seus ímãs, lida da esquerda para a direita. Você pode assumir que as coordenadas são satisfatórias -1024 <= i < 1024
e que o comprimento da lista é no máximo 1024
, se isso ajudar.
Resultado
A lacuna vertical máxima na escultura final. A escultura vazia tem lacunas -1
, e este caso deve ser incluído, pois nosso escultor é um dadaísta.
Regras adicionais
Você pode atribuir uma função ou um programa completo. A menor contagem de bytes vence e as brechas padrão não são permitidas. Código com explicações é o preferido.
Casos de teste
[] -> -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