Editorial for Horizontes


Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

Author: leocar

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

There are no comments at the moment.