QOJ.ac

QOJ

Limite de temps : 1 s Limite de mémoire : 2048 MB Points totaux : 100

#11366. Tomografía SLA

Statistiques

La estereolitografía (SLA) es una técnica de impresión 3D para endurecer material líquido hasta convertirlo en un objeto sólido, una capa a la vez, utilizando un láser. En este problema consideraremos una simplificación en 2D de SLA donde el diseño del objeto que se imprime puede representarse como una cuadrícula rectangular de caracteres # y ., donde # representa una celda de la cuadrícula ocupada por el objeto y . es espacio vacío. Por ejemplo, aquí hay un diseño de $4 \times 8$:

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

Un diseño no tiene por qué consistir en una sola pieza conectada, pero excepto por las celdas # en la fila inferior del diseño, cada celda # debe estar soportada por otra celda # directamente debajo de ella.

La impresión de un objeto mediante SLA avanza capa por capa, comenzando desde la fila inferior. Primero, todas las celdas de la fila se inundan con una resina líquida fotosensible. Luego, un láser barre la fila, endureciendo la resina en todas las celdas # hasta convertirla en un sólido y omitiendo todas las celdas .. A continuación, el líquido sobrante a la izquierda del # más a la izquierda y a la derecha del # más a la derecha se drena. El resto del líquido permanece atrapado. (Si no hay celdas # en la fila —lo cual solo puede ocurrir en filas cercanas a la parte superior del diseño, después de que el objeto se haya impreso por completo—, todo el líquido se drena de la fila). Este proceso se repite luego para cada fila subsiguiente. Para el diseño anterior, una vez completada la impresión, la resina permanece atrapada en todas las celdas marcadas con un carácter ~ a continuación:

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

Mientras succionas manualmente la resina sobrante del objeto, comienzas a preguntarte: ¿cuánto del diseño original se puede recuperar sabiendo únicamente cuánta resina líquida queda en cada fila del diseño después de imprimir? Para el diseño anterior, la cantidad de resina sobrante en cada fila (comenzando desde la parte superior del diseño) es $0, 2, 2, 1$. Otros diseños también tienen la misma huella de resina sobrante; por ejemplo:

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

Dada una lista de cuántas celdas de resina líquida quedan en cada fila (comenzando desde la fila superior), imprime el ancho del diseño de objeto más estrecho cuyas filas contendrían esas cantidades de resina líquida después de la impresión. Si no existe tal diseño, imprime impossible.

Entrada

La primera línea de la entrada contiene un solo entero $N$ ($1 \le N \le 10^5$), el número de filas en el diseño del objeto. Siguen $N$ líneas, cada una con un solo entero $x$ ($0 \le x \le 10^9$), el número de celdas de resina líquida sobrante en cada fila del diseño del objeto deseado (en orden de arriba hacia abajo).

Al menos una fila tendrá al menos una celda sobrante de resina líquida.

Salida

Imprime el ancho (número de columnas) en el diseño de objeto más estrecho cuyo número de celdas de resina líquida sobrante en cada fila coincida con la entrada. («Más estrecho» significa que tiene el menor número posible de columnas). Si no existe tal diseño, imprime impossible en su lugar.

Ejemplos

Entrada 1

4
0
2
2
1

Salida 1

4

Entrada 2

3
4
0
4

Salida 2

11

Nota

La Entrada de ejemplo 1 corresponde al ejemplo anterior. Un diseño lo más estrecho posible para la Entrada de ejemplo 2 es:

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

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.