QOJ.ac

QOJ

시간 제한: 1 s 메모리 제한: 2048 MB 총점: 100

#11366. SLA-томографія

통계

Стереолітографія (SLA) — це технологія 3D-друку для затвердіння рідкого матеріалу в твердий об'єкт шар за шаром за допомогою лазера. У цій задачі ми розглянемо двовимірне спрощення SLA, де проєкт об'єкта, що друкується, можна подати як прямокутну сітку із символів # та ., де # позначає клітинку сітки, зайняту об'єктом, а . — порожній простір. Наприклад, ось проєкт розміром $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

Примітка

Перший приклад відповідає прикладу, наведеному вище. Один із найвужчих можливих проєктів для другого прикладу має вигляд:

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

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.