1159 : จัดลำดับการทดลอง (schedule)
Problem type : Batch
Time limit : 1.0 second(s)
Memory limit : 32 megabyte(s)

นายเมธาต้องการทำการทดลองทางวิทยาศาสตร์อยู่สองงาน โดยที่แต่ละงานประกอบด้วยขั้นตอนทั้งหมด N
ขั้นตอน คือขั้นตอน  J1,J2,J3,..,JN สำหรับงานแรก และ ขั้นตอน K1,K2,K3,...,KN สำหรับงานที่สอง ซึ่งแต่ละขั้นตอนอาจใช้เวลาเท่ากันหรือต่างกันก็ได้ อย่างไรก็ตามขั้นตอนในงานเดียวกันไม่สามารถสลับลำดับกันได้ กล่าวคือ สำหรับงานแรก ขั้นตอน J1 จะต้องถูกทำเป็นอันดับแรก และขั้นตอน J2,J3,...,JN จะถูกทำต่อมาตามลำดับดังกล่าว สำหรับงานที่สองก็เช่นกัน ขั้นตอน K1 จะต้องถูกทำเป็นอันดับแรก และขั้นตอน K2,K3,...,KN จะถูกทำตามลำดับ

แม้จะไม่สามารถสลับลำดับขั้นตอนในงานเดียวกันได้ แต่เมธาก็สามารถสลับลำดับขั้นตอนระหว่างงานแรกกับงานที่สองได้ เป็นต้นว่าถ้า N=3 เมธาสามารถที่จะทำการทดลองในลำดับK1,K2,J1,K3,J2,J3 เพราะลักษณะนี้เป็นการทำการทดลองแต่ละงานตามลำดับจากขั้นตอนแรกไปขั้นตอนสุดท้าย

โชคไม่ดีนัก เมธาพบว่าห้องปฏิบัติการมีเครื่องมือสำหรับทำการทดลองอยู่เพียงชุดเดียว และงานทั้งสองก็ต้องใช้เครื่องมือชุดเดียวกันนี้  ยิ่งไปกว่านั้นเครื่องมือสามารถทำงานได้เพียง M นาทีในแต่ละวัน และการทดลองแต่ละขั้นตอนก็ต้องดำเนินการอย่างต่อเนื่องให้สำเร็จภายในวันเดียวเท่านั้น

ยกตัวอย่างเช่น หากงานแต่ละงานมีสองขั้นตอน N=2 และใช้เครื่องได้ 300 นาทีต่อวัน
 M=300 เมื่อ J1=200, J2=150, K1=50 และ K2=150 ถ้าหากเมธาจัดลำดับการทดลองเป็น J1,J2,K1,K2 ตามลำดับ ขั้นตอน J2 จะไม่สามารถทำได้ในวันแรกเพราะเวลารวมในวันแรกจะเกิน
300 นาที ทำให้ต้องเลื่อนไปทำในวันที่สอง และการทดลองตามลำดับนี้ จะใช้เวลาทั้งหมด 3 วัน โดยวันสุดท้าย (วันที่สาม) จะใช้เวลาทั้งหมด 150 นาที แต่หากเมธาจัดลำดับการทดลองใหม่เป็น J1,K1,K2,J2 การทดลองทั้งหมดจะแล้วเสร็จในเวลาเพียง 2 วัน โดยวันสุดท้าย (วันที่สอง) จะใช้เวลาทั้งหมด 300 นาที

จงเขียนโปรแกรมที่มีประสิทธิภาพในการจัดลำดับขั้นตอนการทดลองที่ทำให้การทดลองทั้งสองงานเสร็จด้วยเวลาที่น้อยที่สุด

ข้อมูลเข้า

1.       บรรทัดแรกเป็นเลขจำนวนเต็ม M ระบุเวลาที่สามารถใช้เครื่องมือได้ในแต่ละวัน
โดยที่ 1 < M < 600
และ M มีหน่วยเป็นนาที

2.       บรรทัดที่สองเป็นจำนวนเต็ม N ระบุจำนวนขั้นตอนในแต่ละงานโดยที่ 2 < N < 1000

3.       บรรทัดที่สามเป็นจำนวนเต็มบวก N จำนวน คือ a1,a2,a3,...,an แต่ละตัวคั่นด้วยช่องว่าง จำนวนแต่ละจำนวนนี้แทนเวลาที่ต้องใช้ทำการทดลองขั้นตอน J1,J2,J3,...,JN ของงานแรกตามลำดับ มีหน่วยเป็นนาที จำนวนแต่ละจำนวนถูกคั่นด้วยช่องว่าง โดยที่ 1 < ai < M, i = 1,...,N

4.       บรรทัดที่สี่เป็นจำนวนเต็มบวก N จำนวนในลักษณะเดียวกับบรรทัดที่สาม แต่จำนวนเหล่านี้แทนเวลาที่ต้องใช้ในการทดลองขั้นตอน K1,K2,K3,...,KN สำหรับงานที่สอง ซึ่งเวลาเหล่านี้มีค่ามากกว่าหรือเท่ากับหนึ่งและน้อยกว่าหรือเท่ากับ M

 

ข้อมูลส่งออก

ข้อมูลส่งออกระบุจำนวนวันที่ต้องใช้ในการทดลองของเมธา และจำนวนนาทีที่ใช้ในการทดลองวันสุดท้าย โดยข้อมูลส่งออกต้องอยู่ในรูปแบบดังต่อไปนี้

1.       บรรทัดแรกระบุจำนวนวันที่ต้องใช้ในการทดลองเป็นจำนวนเต็ม

2.       บรรทัดที่สองระบุจำนวนนาทีที่ใช้สำหรับการทดลองในวันสุดท้าย โดยที่จำนวนนาทีนี้มีค่าตั้งแต่หนึ่งและไม่เกิน M

หมายเหตุ  เวลาในการทดลองที่ดีที่สุดถือตามจำนวนวันเป็นลำดับแรก ในกรณีที่การจัดลำดับขั้นตอนสองแบบใช้จำนวนวันเท่ากัน จะนับเวลาที่ดีที่สุดจากจำนวนนาทีที่ใช้ในวันสุดท้าย


ที่มา : การแข่งขันคอมพิวเตอร์โอลิมปิกระดับชาติครั้งที่ 8 (SUTOI8)


ตัวอย่างข้อมูลนำเข้า ตัวอย่างข้อมูลส่งออก
8
4
4 5 6 4
3 3 2 4
4
8
8
6
2 3 4 5 3 2
6 2 3 2 4 5
6
5
10
12
1 7 5 4 3 6 2 3 4 5 1 8
3 4 4 8 3 9 1 7 3 2 4 5
11
8

ความช่วยเหลือ: ไม่มีคำใบ้สำหรับปัญหานี้

กำลังออนไลน์: 24 ผู้เยี่ยมชมและ 0 สมาชิก (0 บอท)