Supposons que l'on vous donne un ensemble d' intervalles non entrecroisés d'entiers [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
. (Où [a,b]
est l'ensemble d'entiers supérieur ou égal à a
et inférieur ou égal à b
.)
L'intervalle à l'index X
couvre les bX - aX + 1
valeurs. Nous appellerons ce numéro cX
.
Étant donné que chaque intervalle peut être soit ...
- inchangé (reste inchangé
[aX,bX]
), - étendu vers la droite vers le
+
côté du numéro de la ligne encX
(devenant[aX,bX + cX]
), - ou étendu vers la gauche vers le
-
côté du numéro de la ligne encX
(devenant[aX - cX,bX]
),
quel est le nombre maximum de valeurs qui peuvent être couvertes par l'union de tous les intervalles mis à jour, étant donné qu'ils sont toujours tous sans intersection?
Écrivez une fonction ou un programme qui prend une chaîne du formulaire [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
et calcule ce maximum. Si vous écrivez une fonction, renvoyez la valeur. Si vous écrivez un programme complet, utilisez stdin pour la saisie et imprimez la valeur sur stdout (ou utilisez les alternatives les plus proches).
Vous pouvez supposer que toutes les valeurs se situent bien dans les limites entières de 32 bits signées normales et qui aX
est inférieure ou égale à bX
pour tous les indices X
. Les intervalles peuvent être dans n'importe quel ordre, ils n'augmentent pas nécessairement toujours. Ils doivent être donnés sous forme de chaîne dans le format ci-dessus. La chaîne peut être vide, auquel cas la réponse sera 0.
La soumission la plus courte en octets l' emporte.
Exemple
Si l'entrée était [-3,0],[1,2],[4,9]
la sortie serait 22. L'intervalle intermédiaire n'a pas de place pour s'étendre dans un sens ou dans l'autre et doit donc rester inchangé. Les intervalles gauche et droit peuvent être étendus à [-7,0]
et [4,15]
respectivement. L'union de [-7,0]
et [1,2]
et [4,15]
contient toutes les valeurs de -7 à 15, sauf 3. C'est 22 valeurs.
[5,6]
devenir [3,8]
(pour une réponse de 6), ou peut-il être juste [5,8]
ou [3,6]
(pour une réponse de 4)?