Supongamos que se le da un conjunto de que no se cortan intervalos de números enteros [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
. (¿Dónde [a,b]
es el conjunto de enteros mayor o igual que a
y menor que o igual a b
?)
El intervalo en el índice X
cubre bX - aX + 1
valores. Llamaremos a este número cX
.
Dado que cada intervalo puede ser ...
- sin cambios (permanece como
[aX,bX]
), - extendido a la derecha hacia el
+
lado del número de la líneacX
(convirtiéndose[aX,bX + cX]
), - o extendido a la izquierda hacia el
-
lado del número de la líneacX
(convirtiéndose[aX - cX,bX]
),
¿Cuál es el número máximo de valores que puede cubrir la unión de todos los intervalos actualizados, dado que todavía no se cruzan?
Escriba una función o programa que tome una cadena de la forma [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
y calcule este máximo. Si escribe una función, devuelva el valor. Si escribe un programa completo, use stdin para la entrada e imprima el valor en stdout (o use las alternativas más cercanas).
Puede suponer que todos los valores están dentro de los límites enteros normales de 32 bits con signo y que aX
es menor o igual que bX
para todos los índices X
. Los intervalos pueden estar en cualquier orden, no necesariamente siempre están aumentando. Deben darse como una cadena en el formato anterior. La cadena puede estar vacía, en cuyo caso la respuesta será 0.
La presentación más corta en bytes gana.
Ejemplo
Si la entrada fuera [-3,0],[1,2],[4,9]
la salida sería 22. El intervalo medio no tiene espacio para expandirse de ninguna manera, por lo que debe permanecer sin cambios. Los intervalos izquierdo y derecho se pueden extender a [-7,0]
y [4,15]
respectivamente. La unión de [-7,0]
y [1,2]
y [4,15]
contiene todos los valores desde -7 a 15, excepto 3. Eso es 22 valores.
[5,6]
convertirse [3,8]
(para una respuesta de 6), o puede ser justo [5,8]
o [3,6]
(para una respuesta de 4)?