บล็อกการเรียงลำดับแบบสุ่ม
การเรียงบล็อกแบบสุ่มเป็นวิธีการ (ค่อนข้างจะเป็นการประดิษฐ์) ในการจัดเรียงรายการ มันทำงานได้ดังแสดงในตัวอย่าง
[6, 1, 0, 3, 2, 4, -2, -1]
Break list into contiguous blocks
[6][1, 0][3, 2, 4][-2, -1]
Sort each block
[6][0, 1][2, 3, 4][-2, -1]
Sort blocks lexicographically
[-2, -1][0, 1][2, 3, 4][6]
Concatenate
[-2, -1, 0, 1, 2, 3, 4, 6]
สามารถแบ่งพาร์ติชันไปยังบล็อกที่ต่อเนื่องกันได้ อย่างไรก็ตามตัวเลือกทั้งหมดของบล็อกจะไม่ให้รายการเรียงลำดับในตอนท้าย:
[6, 1, 0, 3, 2, 4, -2, -1]
[6, 1, 0][3, 2, 4][-2, -1]
[0, 1, 6][2, 3, 4][-2, -1]
[-2, -1][0, 1, 6][2, 3, 4]
[-2, -1, 0, 1, 6, 2, 3, 4]
หากบล็อกทั้งหมดมีความยาว 1 หรือหากมีเพียงหนึ่งบล็อกผลลัพธ์จะถูกจัดเรียงอย่างแน่นอน แต่นี่เป็นกรณีที่ค่อนข้างรุนแรง ในการท้าทายนี้งานของคุณคือการหาสมดุลระหว่างจำนวนบล็อกและความยาวสูงสุดของบล็อก
งาน
ข้อมูลที่คุณป้อนเป็นรายการที่ไม่ใช่จำนวนเต็มLซึ่งอยู่ในรูปแบบที่สมเหตุสมผล ส่งออกของคุณจะต้องมีขนาดเล็กที่สุดจำนวนเต็มNเช่นว่าLสามารถบล็อกสับเปลี่ยนเรียงเพื่อให้จำนวนของบล็อกและความยาวของแต่ละบล็อกจะมีที่ส่วนใหญ่ยังไม่มีข้อความ
จำนวนไบต์ต่ำสุดในแต่ละภาษาชนะ ใช้กฎมาตรฐานของกอล์ฟ
กรณีทดสอบ
[5] -> 1
[1,2] -> 2
[0,2,1,-1] -> 3
[-1,0,2,1] -> 2
[9,3,8,2,7] -> 4
[9,2,8,3,7] -> 3
[5,9,3,7,2,4,8] -> 7
[-1,-2,1,2,-1,-2,7] -> 4
[6,1,0,3,2,4,-2,-1] -> 4
[12,5,6,-6,-1,0,2,3] -> 3
[1,0,1,0,1,0,1,0,1,0] -> 6
[1,2,1,3,1,2,3,2,4,3] -> 5
[7,7,7,7,8,9,7,7,7,7] -> 4