Las colmenas separadas
- O(n log n) · Difícil
- Plan completo
- Python
- JavaScript
- listas
- ordenar
- búsqueda
Enunciado
Nicasio desbrozó varios claros a lo largo del camino del cerro, pero solo le alcanzó para colmenas colmenas. Las abejas de dos colmenas vecinas se roban entre ellas si quedan cerca, así que quiere acomodarlas de modo que el par más cercano de todo el apiario quede lo más lejos que se pueda: si un acomodo deja dos colmenas a 3 pasos y otro las deja a 4, el bueno es el de 4.
Cada colmena va en un claro y en cada claro cabe una sola. La distancia entre dos colmenas es la diferencia de los pasos donde están sus claros. Lo que se mide de un acomodo es su separación más chica, la del par más cercano, y esa es la que hay que hacer grande. Una separación más chica nunca es más difícil de conseguir: el acomodo que deja a todas las colmenas a 4 pasos o más las deja también a 3 o más.
Escribe una función que reciba sitios, una lista de enteros distintos de 0 o más con el paso de cada claro (al menos dos, en cualquier orden), y colmenas, un entero de 2 al número de claros. Regresa un entero: la separación más chica del mejor acomodo.
Con claros en los pasos 1, 2, 8, 4 y 9 y tres colmenas, la respuesta es 3: van en el 1, el 4 y el 9, y las separaciones son 3 y 5, así que la más chica es 3. Repartir a ojo no sirve: del 1 al 9 hay 8 pasos y la cuenta fácil dice 4, pero para eso harían falta claros en el 1, el 5 y el 9, y en el 5 no hay claro.
Si Nicasio tiene una colmena por claro no hay nada que elegir: todas se ponen y la respuesta es la separación de los dos claros más cercanos.
Hay caminos de hasta 60 claros y los pasos llegan a mil millones.
Ejemplos
El ejemplo
[1, 2, 8, 4, 9], 3 → 3
Seis claros de dos cifras
[0, 3, 4, 7, 10, 9], 4 → 3
Dos colmenas nada más
[1, 5], 2 → 4
Una colmena en cada claro
[2, 5, 6, 13], 4 → 1
Claros parejos
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 3 → 4
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def separacion(sitios, colmenas):
passJavaScript
function separacion(sitios, colmenas) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.
Más retos de O(n log n)
- Las horas de los testigoslistas · ordenar · comparaciones
- Las horas vigiladastextos · listas · ordenar
- Las macetas del jardíndiccionarios · ordenar · índices
- Las sombrillas de la playalistas · ordenar · comparaciones
- Las sondas antes del plazolistas · ordenar · booleanos
- Las vigas del templolistas · ordenar · comparaciones