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

Nachdem Little Cyan Fish seine Fähigkeiten in Fillomino geübt hat, beschließt er, im Spiel „The Artisan of Glimmith“ weiter zu trainieren.

Little Cyan Fish stellt dir zunächst die Regeln von Fillomino vor:

Teile für ein Rechteck aus $m$ Zeilen und $n$ Spalten das Gitter in mehrere Gebiete auf (die Zellen jedes Gebiets müssen orthogonal zusammenhängen), sodass je zwei benachbarte Gebiete unterschiedliche Flächeninhalte haben. In einigen Zellen des Gitters sind bereits Zahlen eingetragen. Die Zahl gibt den Flächeninhalt des Gebiets an, zu dem die Zelle gehört.

problem_18007_e875ed6aff86064e6bfc40f5b6e7c6a4.png

Ein Beispiel für ein Fillomino-Rätsel. Quelle: Puzzle GP 2022 R4

Little Cyan Fish gibt dir nun ein Fillomino-Spielfeld und möchte eine beliebige gültige Lösung für dieses Fillomino-Rätsel konstruieren.

Natürlich ist dieses Problem für Little Cyan Fish zu schwierig, sodass du nur den Fall $m = 1$ lösen musst. Mit anderen Worten: Gegeben ist eine Zeile aus $n$ Zellen, und du möchtest diese Zellen in mehrere Segmente unterteilen (wobei jedes Segment vollständig aus mehreren aufeinanderfolgenden Zellen besteht), sodass gilt:

  • Je zwei benachbarte Segmente haben unterschiedliche Längen;
  • Einige Zellen enthalten Zahlen, und diese Zahlen geben die Anzahl der Zellen in dem Segment an, zu dem diese Zelle gehört.

Little Cyan Fish bittet dich festzustellen, ob eine gültige Lösung für das Spielfeld existiert. Falls sie existiert, musst du außerdem eine beliebige gültige Lösung ausgeben.

Eingabe

Es gibt mehrere Testfälle. Die erste Zeile der Eingabe enthält eine einzelne ganze Zahl $T$ ($1 \le T$), die die Anzahl der Testfälle angibt.

Für jeden Testfall enthält die erste Zeile der Eingabe eine ganze Zahl $n$ ($1 \le n \le 10^6$).

Die nächste Zeile enthält $n$ ganze Zahlen $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Wenn $a_i = 0$ ist, bedeutet dies, dass in der $i$-ten Zelle keine Zahl eingetragen ist. Andernfalls bedeutet es, dass $a_i$ in der $i$-ten Zelle eingetragen ist.

Es wird garantiert, dass die Summe von $n$ über alle Testfälle hinweg $10^6$ nicht überschreitet.

Ausgabe

Gib für jeden Testfall eine einzelne Zeile „No“ aus, falls kein gültiges Schema zum Ausfüllen der Zahlen existiert.

Andernfalls enthält die erste Zeile der Ausgabe die Zeichenkette „Yes“. Die nächste Zeile gibt $n$ ganze Zahlen aus, die die Länge des Segments angeben, in dem sich jede Zelle in dem von dir konstruierten Schema befindet. Falls es mehrere Schemata gibt, die die Anforderungen erfüllen, kannst du eines davon beliebig ausgeben.

Beispiel

Eingabe 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

Ausgabe 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.