Предположим, вам дан набор непересекающихся интервалов целых чисел [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
. (Где [a,b]
множество целых чисел больше или равно a
и меньше или равно b
.)
Интервал в индексе X
охватывает bX - aX + 1
значения. Мы позвоним по этому номеру cX
.
Учитывая, что каждый интервал может быть ...
- без изменений (остается как
[aX,bX]
), - продлен вправо в
+
сторону от номера строкиcX
(становясь[aX,bX + cX]
), - или продлен влево к
-
стороне номера линииcX
(становясь[aX - cX,bX]
),
Каково максимальное количество значений, которое может быть покрыто объединением всех обновленных интервалов, учитывая, что они все еще не пересекаются?
Напишите функцию или программу, которая принимает строку в форме [a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
и вычисляет этот максимум. Если вы пишете функцию, верните значение. Если вы пишете полную программу, используйте stdin для ввода и выведите значение в stdout (или используйте самые близкие альтернативы).
Вы можете предположить, что все значения находятся в пределах нормальных 32-разрядных целочисленных пределов со знаком, и это aX
меньше или равно bX
для всех индексов X
. Интервалы могут быть в любом порядке, они не обязательно всегда увеличиваются. Они должны быть представлены в виде строки в формате выше. Строка может быть пустой, и в этом случае ответ будет 0.
Самая короткая подача в байтах побеждает.
пример
Если бы вход был [-3,0],[1,2],[4,9]
выходным, было бы 22. Средний интервал не имеет места для расширения в любом случае, поэтому он должен оставаться неизменным. Левый и правый интервалы могут быть увеличены до [-7,0]
и [4,15]
соответственно. Объединение [-7,0]
и [1,2]
и [4,15]
содержит все значения от -7 до 15, кроме 3. Это 22 значения.
[5,6]
стать [3,8]
(для ответа 6), или это может быть просто [5,8]
или [3,6]
(для ответа 4)?