QOJ.ac

QOJ

時間限制: 1 s 記憶體限制: 2048 MB 總分: 100

#11366. การถ่ายภาพตัดขวาง SLA

统计

สเตอริโอลิโทกราฟี (Stereolithography หรือ SLA) เป็นเทคนิคการพิมพ์ 3 มิติเพื่อทำให้วัสดุเหลวแข็งตัวเป็นวัตถุของแข็งทีละชั้นโดยใช้เลเซอร์ ในปัญหานี้ เราจะพิจารณาการลดรูปของ SLA เป็น 2 มิติ ซึ่งแบบของวัตถุที่กำลังพิมพ์สามารถแทนด้วยตารางสี่เหลี่ยมมุมฉากของอักขระ # และ . โดยที่ # แทนช่องตารางที่ถูกครอบครองโดยวัตถุ และ . แทนพื้นที่ว่าง ตัวอย่างเช่น นี่คือแบบขนาด $4 \times 8$:

..#.....
..#..#..
#.#.##..
#.#####.

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

การพิมพ์วัตถุโดยใช้ SLA จะดำเนินการทีละชั้นโดยเริ่มจากแถวล่างสุด ขั้นแรก ทุกช่องในแถวจะถูกท่วมด้วยเรซินเหลวไวแสง จากนั้นเลเซอร์จะกวาดผ่านแถว ทำให้เรซินในทุกช่อง # แข็งตัวเป็นของแข็งและข้ามทุกช่อง . ไป จากนั้น ของเหลวที่เหลืออยู่ทางซ้ายของ # ที่อยู่ซ้ายสุดและทางขวาของ # ที่อยู่ขวาสุดจะไหลออกไป ของเหลวส่วนอื่นจะยังคงถูกกักขังอยู่ (หากไม่มีช่อง # ในแถวเลย—ซึ่งสามารถเกิดขึ้นได้เฉพาะกับแถวใกล้ด้านบนสุดของแบบ หลังจากที่วัตถุถูกพิมพ์เสร็จสมบูรณ์แล้ว—ของเหลวทั้งหมดจะไหลออกจากแถว) จากนั้นกระบวนการนี้จะทำซ้ำสำหรับแต่ละแถวถัดไป สำหรับแบบด้านบน หลังจากการพิมพ์เสร็จสมบูรณ์ เรซินจะยังคงถูกกักอยู่ในทุกช่องที่ทำเครื่องหมายด้วยอักขระ ~ ด้านล่างนี้:

..#.....
..#~~#..
#~#~##..
#~#####.

ในขณะที่กำลังดูดเรซินที่ตกค้างออกจากวัตถุด้วยมือ คุณก็เริ่มสงสัยว่า: เราสามารถกู้คืนแบบดั้งเดิมได้มากน้อยเพียงใดจากการรู้เพียงว่ามีเรซินเหลวเหลืออยู่ในแต่ละแถวของแบบมากเท่าใดหลังจากการพิมพ์? สำหรับแบบด้านบน ปริมาณเรซินที่เหลืออยู่ในแต่ละแถว (เริ่มจากด้านบนสุดของแบบ) คือ $0, 2, 2, 1$ แบบอื่นๆ ก็มีรูปแบบเรซินตกค้างแบบเดียวกันนี้เช่นกัน ตัวอย่างเช่น:

....
#..#
#..#
#.##

เมื่อกำหนดรายการจำนวนช่องของเรซินเหลวที่เหลืออยู่ในแต่ละแถว (เริ่มจากแถวบนสุด) จงพิมพ์ความกว้างของแบบวัตถุที่แคบที่สุดซึ่งแต่ละแถวจะมีปริมาณเรซินเหลวเหล่านั้นหลังจากการพิมพ์ หากไม่มีแบบดังกล่าวอยู่ จงพิมพ์ impossible

ข้อมูลนำเข้า

บรรทัดแรกของข้อมูลนำเข้าประกอบด้วยจำนวนเต็มเดี่ยว $N$ ($1 \le N \le 10^5$) คือจำนวนแถวในแบบวัตถุ ตามด้วย $N$ บรรทัด แต่ละบรรทัดประกอบด้วยจำนวนเต็มเดี่ยว $x$ ($0 \le x \le 10^9$) คือจำนวนช่องของเรซินเหลวที่เหลืออยู่ในแต่ละแถวของแบบวัตถุที่ต้องการ (เรียงตามลำดับจากบนลงล่าง)

อย่างน้อยหนึ่งแถวจะมีเรซินเหลวที่เหลืออยู่อย่างน้อยหนึ่งช่อง

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

พิมพ์ความกว้าง (จำนวนคอลัมน์) ในแบบวัตถุที่แคบที่สุดซึ่งมีจำนวนช่องเรซินเหลวที่เหลืออยู่ในแต่ละแถวตรงกับข้อมูลนำเข้า ("แคบที่สุด" หมายถึงมีจำนวนคอลัมน์น้อยที่สุดเท่าที่เป็นไปได้) หากไม่มีแบบดังกล่าวอยู่ ให้พิมพ์ impossible แทน

ตัวอย่าง

ข้อมูลนำเข้า 1

4
0
2
2
1

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

4

ข้อมูลนำเข้า 2

3
4
0
4

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

11

หมายเหตุ

ข้อมูลนำเข้าตัวอย่างที่ 1 สอดคล้องกับตัวอย่างด้านบน แบบที่แคบที่สุดที่เป็นไปได้แบบหนึ่งสำหรับข้อมูลนำเข้าตัวอย่างที่ 2 คือ:

#....#.....
######.....
######....#

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.