Word Wrap (2)

Vamos a hacer como el (el editor de textos que usamos en la OIE para escribir los enunciados de los problemas): tenemos un texto formado por palabras separadas por espacios, y queremos “cortarlo” en líneas de no más de kk letras cada una (el espacio horizontal que tenemos disponible). Sin embargo, a diferencia del Word, no intentaremos ocupar el mínimo número de líneas posible: lo que queremos es evitar que hayan líneas demasiado vacías.

Si tenemos un ancho de kk letras, y nuestra línea ocupa sólo tkt\leq k de esas letras, diremos que la fealdad de la línea es (kt)2(k-t)^2. La fealdad de un texto dividido en líneas es la suma de las fealdades de todas sus líneas, excepto la última. Se te pide que calcules, de entre todos los modos de dividir un texto en líneas, la fealdad mínima que es posible conseguir.

Entrada

La entrada de este problema es idéntica a la del problema “Word Wrap (1)”. Es decir, una línea con el número k>0k>0, seguido de un número indeterminado de líneas con palabras (secuencias de letras, dígitos, o signos de puntuación) separadas entre sí por un número arbitrario de espacios y saltos de línea. Se te asegura que ninguna palabra tiene más de kk letras.

Se te garantiza que k<100k<100 y que no habrá más de 50005000 palabras.

Salida

Escribe una línea con la mínima fealdad que es posible conseguir.

Pista

¡Haber resuelto “Word Wrap (1)” no te servirá de nada para resolver este problema! Deberás hacer un backtracking si aspiras a obtener 50 puntos, y programación dinámica si aspiras a los 100.

Puntuación

Información del problema

Autoría: Omer Giménez

Generación: 2026-01-25T11:06:35.047Z

© Jutge.org, 2006–2026.
https://jutge.org