Предположим, вам дан набор непересекающихся интервалов целых чисел [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)?