Universal Cup Judging System

Universal Cup

時間限制: 1.0 s 記憶體限制: 1024 MB 總分: 100 难度: [顯示] 可 Hack ✓
统计

Po przećwiczeniu umiejętności w Fillomino, Little Cyan Fish postanawia potrenować więcej w grze „The Artisan of Glimmith”.

Najpierw Little Cyan Fish przedstawia ci zasady Fillomino:

Dla prostokąta o $m$ wierszach i $n$ kolumnach podziel siatkę na kilka obszarów (komórki każdego obszaru muszą być połączone ortogonalnie) tak, aby dowolne dwa sąsiadujące obszary miały różne pola powierzchni. Niektóre komórki w siatce mają już wpisane liczby. Liczba ta oznacza pole powierzchni obszaru, do którego należy dana komórka.

problem_18007_e875ed6aff86064e6bfc40f5b6e7c6a4.png

Przykład łamigłówki Fillomino. Źródło: Puzzle GP 2022 R4

Teraz Little Cyan Fish daje ci planszę Fillomino i chce skonstruować dowolne poprawne rozwiązanie tej łamigłówki Fillomino.

Oczywiście ten problem jest zbyt trudny dla Little Cyan Fish, więc musisz rozwiązać tylko przypadek, w którym $m = 1$. Innymi słowy, mając dany wiersz złożony z $n$ komórek, chcesz podzielić te komórki na kilka odcinków (każdy odcinek zawiera w całości pewną liczbę kolejnych komórek), wymagając, aby:

  • Dowolne dwa sąsiadujące odcinki miały różne długości;
  • Niektóre komórki zawierały pewne liczby, a liczby te oznaczały liczbę komórek w odcinku, do którego należy dana komórka.

Little Cyan Fish prosi cię o ustalenie, czy istnieje poprawne rozwiązanie dla tej planszy. Jeśli istnieje, musisz również wypisać dowolne poprawne rozwiązanie.

Wejście

Wejście składa się z wielu przypadków testowych. Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą $T$ ($1 \le T$), oznaczającą liczbę przypadków testowych.

Dla każdego przypadku testowego pierwszy wiersz wejścia zawiera liczbę całkowitą $n$ ($1 \le n \le 10^6$).

Kolejny wiersz zawiera $n$ liczb całkowitych $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Jeśli $a_i = 0$, oznacza to, że w $i$-tej komórce nie wpisano żadnej liczby. W przeciwnym razie oznacza to, że w $i$-tej komórce wpisano liczbę $a_i$.

Gwarantuje się, że suma $n$ po wszystkich przypadkach testowych nie przekracza $10^6$.

Wyjście

Dla każdego przypadku testowego, jeśli nie istnieje żaden poprawny sposób wypełnienia liczb, wypisz pojedynczy wiersz „No”.

W przeciwnym razie pierwszy wiersz wyjścia powinien zawierać napis „Yes”. Kolejny wiersz powinien zawierać $n$ liczb całkowitych, oznaczających długość odcinka, w którym znajduje się każda komórka w skonstruowanym przez ciebie rozwiązaniu. Jeśli istnieje wiele rozwiązań spełniających wymagania, możesz wypisać dowolne z nich.

Przykład

Wejście 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

Wyjście 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.