Припустимо, вам задано набір непересічних інтервалів цілих чисел [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)?