Universal Cup Judging System

Universal Cup

Límite de tiempo: 1.0 s Límite de memoria: 1024 MB Puntuación total: 100 Dificultad: [mostrar] Hackeable ✓
Estadísticas

Потренировавшись в решении филлomino (Fillomino), Little Cyan Fish решает продолжить тренировки в игре «The Artisan of Glimmith».

Сначала Little Cyan Fish знакомит вас с правилами филлomino:

Прямоугольную сетку из $m$ строк и $n$ столбцов требуется разбить на несколько областей (клетки каждой области должны быть ортогонально связны) так, чтобы любые две соседние области имели разную площадь. В некоторых клетках сетки уже записаны числа. Число указывает площадь области, которой принадлежит эта клетка.

problem_18007_e875ed6aff86064e6bfc40f5b6e7c6a4.png

Пример головоломки филлomino. Источник: Puzzle GP 2022 R4

Теперь Little Cyan Fish даёт вам поле филлomino и хочет построить любое корректное решение для этой головоломки.

Конечно, эта задача слишком сложна для Little Cyan Fish, поэтому вам нужно решить только случай $m = 1$. Другими словами, дана строка из $n$ клеток, и вы хотите разбить эти клетки на несколько отрезков (каждый отрезок полностью состоит из нескольких подряд идущих клеток), требуя, чтобы:

  • Любые два соседних отрезка имели разную длину;
  • В некоторых клетках были записаны числа, и эти числа указывали количество клеток в отрезке, которому принадлежит данная клетка.

Little Cyan Fish просит вас определить, существует ли корректное решение для данного поля. Если оно существует, вам также нужно вывести любое корректное решение.

Входные данные

Входные данные состоят из нескольких наборов входных данных. Первая строка входных данных содержит одно целое число $T$ ($1 \le T$), обозначающее количество наборов входных данных.

Для каждого набора входных данных первая строка содержит целое число $n$ ($1 \le n \le 10^6$).

Следующая строка содержит $n$ целых чисел $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Если $a_i = 0$, это означает, что в $i$-й клетке число не записано. В противном случае это означает, что в $i$-й клетке записано число $a_i$.

Гарантируется, что сумма $n$ по всем наборам входных данных не превышает $10^6$.

Выходные данные

Для каждого набора входных данных, если не существует ни одного корректного способа заполнить числа, выведите одну строку «No».

В противном случае первая строка выходных данных должна содержать строку «Yes». В следующей строке выведите $n$ целых чисел, представляющих длину отрезка, в котором находится каждая клетка в построенной вами схеме. Если подходящих схем несколько, вы можете вывести любую из них.

Пример

Входные данные 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

Выходные данные 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.