Desafío Ryckeboer 3: “Buen Kilo de Pan Flauta”
Enunciado
La empresa de pan Flauta quiere sacar a la venta un nuevo envase que contiene un kilo de pan (curiosamente, no se trata de pan flauta sino de pan lactal). Como parte del equipo de diseño de envases, les encargaron diseñar una pirámide nutricional acorde a los requerimientos de la empresa. La pirámide nutricional será representada por una grilla triangular de lado L, que es un triángulo equilátero dividido en triángulos unitarios (o sea, triángulos equiláteros de lado uno) trazando paralelas a los lados del triángulo mayor.
Por ejemplo, en la siguiente figura se ven grillas para L = 4, 5, y 6.
Se sabe que hay K tipos de alimentos distintos para mostrar en la pirámide nutricional, cada uno de los cuales será representado por una sección horizontal de la misma. Una sección horizontal es la porción de la pirámide que queda entre dos rectas paralelas a la base de la grilla, trazadas de manera tal que solo toquen triángulos unitarios en sus bordes, sin atravesarlos. En el gráfico a continuación se pueden ver sombreadas tres secciones horizontales válidas de una grilla con L = 5.
Es importante que las K secciones en que quede dividida la pirámide se puedan ver bien, y para ello es necesario que cada una esté conformada por muchos triángulos unitarios. Sin embargo, como el tamaño de la grilla está fijo, hay una cantidad limitada de triángulos unitarios para repartir entre las K secciones. Para asegurarse de que ninguna sección quede desproporcionadamente pequeña, les han pedido que averigüen cuál es la máxima cantidad de triángulos unitarios que pueden conformar la sección más pequeña, si se eligen las secciones óptimamente.
Por ejemplo, a continuación se muestran tres formas distintas de dividir grilla de lado L= 5 en K = 3 secciones.
En la grilla de la izquierda hay dos secciones con 9 triángulos unitarios cada una, teniendo la otra sección 7 triángulos unitarios. En la grilla central, las secciones tienen 12, 9 y 4 triángulos unitarios, mientras que en la grilla de la derecha tienen 16, 8 y 1. De estas tres formas de elegir las secciones horizontales, la mejor es entonces la de la grilla de la izquierda, dado que en ella la sección más pequeña tiene 7 triángulos unitarios, mientras que en la grilla central y de la derecha las secciones más pequeñas tienen 4 y 1 triángulos unitarios, respectivamente. De hecho, la elección de las secciones representada por la pirámide de la izquierda de la figura es óptima, ya que no hay ninguna otra elección posible de K = 3 secciones horizontales en la que la más pequeña de ellas tenga más de 7 triángulos unitarios.
Entrada
Vienen L (lado del triángulo) y K (cantidad de secciones), que cumplen 1 \leq K \leq L \leq 10^6
Salida
Un entero que representa la máxima cantidad de triángulos unitarios que pueden conformar la sección horizontal más pequeña
Link
Link al problema original (en juez SPOJ)
(el enunciado en el link está en Inglés)
Actualización
Acá van dos pistas. Ambas bastante reveladoras (creo).
Pista 1
Pensar primero el siguiente problema: “¿Se puede completar una pirámide de lado L y K secciones si pedimos que cada una de las secciones tenga al menos T triangulitos?”
Pista 2
Ver la Pista 1 y ver cómo hacer encajar una búsqueda binaria en todo esto. ¿Sobre qué podemos hacer una búsqueda binaria?