Universal Cup Judging System

Universal Cup

시간 제한: 1.0 s 메모리 제한: 1024 MB 총점: 100 난이도: [표시] 해킹 가능 ✓
통계

Después de practicar sus habilidades en Fillomino, Little Cyan Fish decide entrenar más en el juego «The Artisan of Glimmith».

Little Cyan Fish primero te presenta las reglas de Fillomino:

Para un rectángulo de $m$ filas y $n$ columnas, divide la cuadrícula en varias regiones (las celdas de cada región deben estar conectadas ortogonalmente), de modo que cualesquiera dos regiones adyacentes tengan áreas diferentes. Algunas celdas de la cuadrícula ya tienen números escritos. El número indica el área de la región a la que pertenece.

problem_18007_e875ed6aff86064e6bfc40f5b6e7c6a4.png

Un ejemplo de un rompecabezas Fillomino. Fuente: Puzzle GP 2022 R4

Ahora Little Cyan Fish te da un tablero de Fillomino, y quiere construir cualquier solución válida para este rompecabezas de Fillomino.

Por supuesto, este problema es demasiado difícil para Little Cyan Fish, por lo que solo necesitas resolver el caso en que $m = 1$. En otras palabras, dada una fila de $n$ celdas, quieres dividir estas celdas en varios segmentos (cada segmento contiene completamente varias celdas consecutivas), requiriendo que:

  • Cualesquiera dos segmentos adyacentes tengan longitudes diferentes;
  • Algunas celdas contienen números, y estos números indican la cantidad de celdas en el segmento al que pertenece dicha celda.

Little Cyan Fish te pide determinar si existe una solución válida para el tablero. Si existe, también debes imprimir cualquier solución válida.

Entrada

Hay múltiples casos de prueba. La primera línea de la entrada contiene un único entero $T$ ($1 \le T$), que indica el número de casos de prueba.

Para cada caso de prueba, la primera línea de la entrada contiene un entero $n$ ($1 \le n \le 10^6$).

La siguiente línea contiene $n$ enteros $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Si $a_i = 0$, significa que no se ha escrito ningún número en la $i$-ésima celda. De lo contrario, significa que se ha escrito $a_i$ en la $i$-ésima celda.

Se garantiza que la suma de $n$ en todos los casos de prueba no supera $10^6$.

Salida

Para cada caso de prueba, si no existe ningún esquema válido para rellenar los números, imprime una sola línea con «No».

De lo contrario, la primera línea de la salida contiene la cadena «Yes». La siguiente línea imprime $n$ enteros, que representan la longitud del segmento donde se ubica cada celda en el esquema que construiste. Si hay múltiples esquemas que cumplen los requisitos, puedes imprimir cualquiera de ellos.

Ejemplo

Entrada 1

7
3
0 0 0
4
2 0 0 0
4
0 2 0 0
6
0 3 3 0 3 0
10
2 0 0 3 0 0 4 0 0 1
6
0 0 1 1 0 0
6
1 2 3 4 5 6

Salida 1

Yes
2 2 1
No
Yes
1 2 2 1
No
Yes
2 2 3 3 3 4 4 4 4 1
No
No

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.