สมมติว่าคุณจะได้รับชุดของที่ไม่ได้ตัด[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)?