บทนำ
บางท่านอาจจะเคยได้ยินของฮิลแบร์ตแกรนด์โฮเต็ล ผู้จัดการที่นั่นสูญเสียรายชื่อแขกที่เข้าพัก แต่เขายังคงมีคำสั่งในการเช็คอินแขกแต่ละคนไม่สามารถเข้าพักในห้องที่มีจำนวนห้องน้อยกว่ามูลค่าของพวกเขาและหากแขกถูกเพิ่มลงต่ำ ห้องแขกทุกคนในห้องที่สูงขึ้นโดยไม่มีที่ว่างระหว่างพวกเขาและแขกใหม่จะเลื่อนขึ้นหนึ่งห้อง คุณช่วยเขาค้นหาว่าแขกแต่ละคนพักอยู่ที่ไหน?
ความต้องการ
เขียนโปรแกรมที่ได้รับรายการคำสั่งของตัวเลขธรรมชาติเป็นอินพุตและวางไว้ที่ดัชนีของพวกเขา หากมีค่าอยู่ในดัชนีนั้นมันจะถูกเลื่อนขึ้นเป็นรายการถัดไปในรายการ กระบวนการนี้ทำซ้ำจนกว่าจะพบพื้นที่ว่างเปล่า (0 หรือไม่ได้กำหนด) แรก ช่องว่างที่ไม่ได้กำหนดระหว่างดัชนีสูงสุดในปัจจุบันและอินพุตใหม่ใด ๆ จะถูกเติมด้วยการเพิ่ม 0s เนื่องจากที่นี่เป็นโรงแรมแกรนด์ของฮิลแบร์ตจึงไม่มีห้องพักที่สูงกว่าดัชนีที่ครอบครองสูงสุดในปัจจุบัน
อินพุตและเอาต์พุต
ข้อมูลที่ป้อนจะเป็นรายการหมายเลขธรรมชาติเรียงลำดับ (อนุญาตให้อ่านผ่านรูปแบบที่ยอมรับได้)
แต่ละหมายเลขในข้อมูลเข้าถือว่าเป็นแขกหนึ่งท่านที่เดินทางมาถึงโรงแรมและอยู่ในลำดับที่เดินทางมาถึง
ผลลัพธ์จะเป็นการจัดการสุดท้ายของแขก (หมายเลข)
ตัวอย่าง
ข้อมูลเข้า: 1 3 1
เอาท์พุท: 1 1 3
ทีละขั้นตอน:
1
สร้างห้องที่ดัชนี 1 และวาง 1 ในนั้น
1 0 3
สร้างห้องถึงดัชนี 3 และวาง 3 ในห้อง 3
1 1 3
เลื่อนเนื้อหาของห้อง 1 ขึ้นไป หนึ่งห้องและสถานที่ 1 ในห้อง 1อินพุต: 1 4 3 1 2 1
เอาต์พุต : 1 1 2 1 3 4
ทีละขั้นตอน:
1
สร้างห้องที่ดัชนี 1 และวาง 1 ในนั้น
1 0 0 4
สร้างห้องขึ้นไปที่ดัชนี 4 และวาง 4 ในห้อง 4
1 0 3 4
สถานที่ 3 ในห้อง 3
1 1 3 4
เลื่อนเนื้อหาของห้อง 1 ขึ้นไปหนึ่งห้องและวาง 1 ในห้อง 1
1 2 1 3
4 เลื่อนเนื้อหาของห้อง 2 ถึง 4 ขึ้นหนึ่งห้องและวาง 2 ในห้อง 2
1 1 2 1 3 3 4
เปลี่ยนเนื้อหาของห้องที่ 1 ถึง 5 ขึ้นหนึ่งห้องและวาง 1 ในห้องที่ 1อินพุต: 10
เอาต์พุต: 0 0 0 0 0 0 0 0 0 0 10
ทีละขั้นตอน:
0 0 0 0 0 0 0 0 0 10 10
สร้างห้องจนถึงห้อง 10 และวาง 10 ในห้อง 10หมายเหตุ:
การทำงานกับดัชนี 0 นั้นใช้ได้และคุณอาจแทรก 0 ที่ด้านหน้าของเอาต์พุตในกรณีนั้น
ช่องโหว่มาตรฐานเป็นสิ่งต้องห้ามรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ