Editorial for Horizontes
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Representa un horizonte (cero o más edificios) como una lista de segmentos de línea. Esta lista está ordenada en la dirección horizontal. Su área se puede calcular fácilmente en tiempo lineal sumando el área debajo de cada segmento de línea.
Combine dos horizontes de este tipo (el horizonte total y cada nuevo edificio) en tiempo lineal, insertando nuevos vértices donde se intersecan los segmentos de línea.
Agregue los edificios en el orden dado, y encuentre el área visible de cada nuevo edificio comparando la diferencia de área de los horizontes con y sin el edificio con el área del edificio en sí. (Si el área del horizonte no aumentó, ninguna parte del nuevo edificio fue visible).
/res/problem/horizontes/skyline2.png
Comments