แบ่งพาร์ติชันเป็นลำดับที่เพิ่มขึ้น
สเปค ความท้าทายนี้ง่ายต่อการระบุ: อินพุตของคุณเป็นอาร์เรย์ที่ไม่ว่างของจำนวนเต็มที่ไม่ติดลบและงานของคุณคือแบ่งพาร์ติชันให้เป็นองค์ประกอบที่เพิ่มขึ้นน้อยที่สุดเท่าที่จะทำได้ อย่างเป็นทางการมากขึ้นถ้าอาร์เรย์อินAพุทคือเอาท์พุทเป็นอาร์เรย์ของอาร์เรย์Bดังกล่าว: แต่ละอาร์เรย์ในBรูปแบบพาร์ติชันของการเรียงAกัน (ไม่จำเป็นต้องต่อเนื่องกัน) Inductively นี่หมายความว่าอย่างใดอย่างหนึ่งBเป็นอาร์เรย์เดี่ยวที่มีAหรือองค์ประกอบแรกของBเป็นลำดับของAและส่วนที่เหลือเป็นรูปแบบพาร์ทิชันที่Aมีการลบออกเรียงลำดับ ทุกแถวในBนั้น (ไม่จำเป็นต้องเพิ่ม) จำนวนของอาร์เรย์Bมีค่าน้อยที่สุด ทั้งอินพุทและเอาท์พุทสามารถใช้รูปแบบอาเรย์ดั้งเดิมของภาษาของคุณ โปรดทราบว่าอาจมีผลลัพธ์ที่ถูกต้องหลายอย่าง ตัวอย่าง A = [1,2,1,2,5,4,7,1]พิจารณาอาร์เรย์การป้อนข้อมูล B = [[1],[1,2,4,7],[1,2,5]]การส่งออกที่เป็นไปได้คือ เงื่อนไขของพาร์ติชันนั้นเห็นได้จากแผนภาพนี้: A 1 2 1 2 5 4 7 1 B[0] 1 B[1] 1 2 4 7 B[2] 1 2 5 นอกจากนี้แต่ละอาร์เรย์Bยังเพิ่มมากขึ้น ในที่สุดAไม่สามารถแบ่งออกเป็นสองส่วนที่เพิ่มขึ้นดังนั้นความยาวของBมันก็น้อยมาก ดังนั้นมันเป็นผลลัพธ์ที่ถูกต้อง กฎและการให้คะแนน คุณสามารถเขียนฟังก์ชั่นหรือโปรแกรมเต็มรูปแบบ จำนวนไบต์ต่ำสุดที่ชนะและช่องโหว่มาตรฐานไม่ได้รับอนุญาต ไม่มีเวลาผูกมัด แต่คุณควรทำการแก้ปัญหาของคุณในทุกกรณีทดสอบก่อนที่จะส่ง กรณีทดสอบ …