整数の非交差区間のセットが与えられたと仮定します[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以下であると仮定できます。間隔は任意の順序でかまいませんが、必ずしも常に増加しているわけではありません。上記の形式の文字列として指定する必要があります。文字列は空の場合があります。その場合、答えは0になります。bXX
例
入力が[-3,0],[1,2],[4,9]出力の場合、22になります。中央の間隔にはどちらの方法でも拡張する余地がないため、変更しないでおく必要があります。左右の間隔は[-7,0]、[4,15]それぞれに拡張することができます。[-7,0]and [1,2]とunionの結合には、[4,15]-7から15までのすべての値が含まれます(3を除く)。22の値です。
[5,6]になる[3,8](6の答えのため)、またはそれだけで可能[5,8]か[3,6](4の答えのため)?