Supponiamo che ti venga fornito un insieme di intervalli non intersecanti di numeri interi [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
. (Dov'è [a,b]
l'insieme di numeri interi maggiori o uguali a a
e minori di o uguali a b
.)
L'intervallo all'indice X
copre i bX - aX + 1
valori. Chiameremo questo numero cX
.
Dato che ogni intervallo può essere ...
- invariato (rimane come
[aX,bX]
), - esteso a destra verso il
+
lato del numero della lineacX
(diventando[aX,bX + cX]
), - o esteso a sinistra verso il
-
lato del numero della lineacX
(diventando[aX - cX,bX]
),
qual è il numero massimo di valori che possono essere coperti dall'unione di tutti gli intervalli aggiornati, dato che sono ancora tutti non intersecanti?
Scrivi una funzione o un programma che accetta una stringa del modulo [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
e calcola questo massimo. Se si scrive una funzione, restituire il valore. Se si scrive un programma completo, utilizzare stdin per l'input e stampare il valore su stdout (o utilizzare le alternative più vicine).
Si può presumere che tutti i valori rientrino nei normali limiti di numero intero a 32 bit con segno e che aX
sia inferiore o uguale a bX
per tutti gli indici X
. Gli intervalli possono essere in qualsiasi ordine, non sono necessariamente sempre in aumento. Devono essere indicati come una stringa nel formato sopra. La stringa può essere vuota, nel qual caso la risposta sarà 0.
Vince l' invio più breve in byte .
Esempio
Se l'ingresso fosse [-3,0],[1,2],[4,9]
l'output sarebbe 22. L'intervallo intermedio non ha spazio per espandersi in entrambi i modi, quindi deve rimanere invariato. Gli intervalli sinistro e destro possono essere entrambi estesi a [-7,0]
e [4,15]
rispettivamente. L'unione di [-7,0]
e [1,2]
e [4,15]
contiene tutti i valori da -7 a 15, ad eccezione di 3. Questo è di 22 valori.
[5,6]
diventare [3,8]
(per una risposta di 6) o può essere solo [5,8]
o [3,6]
(per una risposta di 4)?