Editorial for Luciérnaga
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Digamos que se escoge la altura ; entonces se deben romper los obstáculos que salen desde abajo con altura , y todos los obstáculos que salen desde arriba con altura . Si iteramos por cada posible, debemos poder responder estas consultas (cantidad de valores ) de manera rápida. Una forma de hacerlo sería mantener en un arreglo las alturas de los obstáculos que salen desde arriba ordenadas, y en otro arreglo las alturas de los obstáculos que salen desde abajo ordenadas, y luego podemos hacer para cada , búsqueda binaria, obteniendo complejidad temporal y espacial .
También se puede lograr complejidad , podemos llevar un arreglo de frecuencias para los obstáculos que salen desde abajo, y otro para los que salen desde arriba. Estos arreglos de frecuencia cuentan cuántas veces se repite cada altura. Luego, podemos hacer una tabla acumulativa (arreglo de sumas sufijo) sobre estos arreglos de frecuencia. Así, cada consulta saldría en tiempo , por tanto la complejidad temporal sería y la complejidad espacial sería .
Código de ejemplo: Por añadir :)
Comments