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 k 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 k letras, y nuestra línea ocupa sólo t ≤ k de
esas letras, diremos que la fealdad de la línea es (k − t)². 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 > 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 k letras.

Se te garantiza que k < 100 y que no habrá más de 5000 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

- Easy:   Entradas con no más de 20 palabras cada una.

- Hard:   Entradas de todo tipo.

Información del problema

Autoría: Omer Giménez

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

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