QOJ.ac

QOJ

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

#11366. SLA トモグラフィー

统计

光造形法(Stereolithography、SLA)は、レーザーを用いて液体材料を一層ずつ硬化させ、固体の造形物を作る 3D プリント技術です。この問題では SLA を 2D に単純化したものを考えます。プリントされる物体の設計図は # と . の文字からなる長方形のグリッドとして表され、# は物体が占めるグリッドのマス、. は空きスペースを表します。例えば、以下は $4 \times 8$ の設計図です。

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

設計図は単一の連結成分からなっている必要はありませんが、設計図の最下段にある # のマスを除き、各 # のマスはその真下にある別の # のマスによって支えられていなければなりません。

SLA を用いた物体のプリントは、最下段の行から始めて一層ずつ進みます。まず、その行のすべてのマスが液体の感光性樹脂で満たされます。次にレーザーがその行を走査し、すべての # のマスにある樹脂を硬化させて固体にし、すべての . のマスをスキップします。その後、最も左にある # より左側の余分な液体と、最も右にある # より右側の余分な液体が排出されます。それ以外の液体は閉じ込められたまま残ります。(もしその行に # のマスが一つもなければ——これは物体が完全にプリントされた後の、設計図の上部付近の行でのみ起こり得ます——その行の液体はすべて排出されます。)このプロセスが以降のすべての行に対して繰り返されます。上記の設計図の場合、プリントが完了した後、以下の ~ の文字で印が付けられたすべてのマスに樹脂が閉じ込められたまま残ります。

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

物体から残った樹脂を手作業で吸引しているうちに、あなたはふと疑問に思いました。プリント後に設計図の各行にどれだけの液体樹脂が残っているかという情報だけから、元の設計図をどの程度復元できるのでしょうか?上記の設計図では、各行(設計図の一番上の行から順)に残った樹脂の量は $0, 2, 2, 1$ です。他の設計図でも同じ残留樹脂の特徴を持つものがあります。例えば次の通りです。

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

各行(一番上の行から順)に残った液体樹脂のマス数のリストが与えられたとき、プリント後に各行にその量の液体樹脂が残るような物体の設計図のうち、最も幅が狭いものの幅を出力してください。そのような設計図が存在しない場合は impossible と出力してください。

入力

入力の 1 行目には、物体の設計図の行数を表す単一の整数 $N$($1 \le N \le 10^5$)が与えられます。続く $N$ 行にはそれぞれ単一の整数 $x$($0 \le x \le 10^9$)が与えられ、上から下の順で目的の物体の設計図の各行に残る液体樹脂のマス数を表します。

少なくとも 1 つの行には、少なくとも 1 マスの残留液体樹脂があります。

出力

各行に残る液体樹脂のマス数が入力と一致するような、最も幅が狭い物体の設計図の幅(列数)を出力してください(「最も幅が狭い」とは、列数が可能な限り小さいことを意味します)。そのような設計図が存在しない場合は、代わりに 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.