Universal Cup Judging System

Universal Cup

Limite de temps : 1.0 s Limite de mémoire : 1024 MB Points totaux : 100 Difficulté: [afficher] Hackable ✓
Statistiques

Efter att ha övat på sina färdigheter i Fillomino bestämmer sig Little Cyan Fish för att träna mer i spelet "The Artisan of Glimmith".

Little Cyan Fish presenterar först reglerna för Fillomino för dig:

För en rektangel med $m$ rader och $n$ kolumner, dela in rutnätet i flera områden (rutorna i varje område måste vara ortogonalt sammanhängande), så att varje par av angränsande områden har olika areor. Vissa rutor i rutnätet har redan ifyllda tal. Talet anger arean på det område som rutan tillhör.

problem_18007_e875ed6aff86064e6bfc40f5b6e7c6a4.png

Ett exempel på ett Fillomino-pussel. Källa: Puzzle GP 2022 R4

Little Cyan Fish ger dig nu ett Fillomino-bräde, och han vill konstruera en giltig lösning vilken som helst för detta Fillomino-pussel.

Naturligtvis är detta problem för svårt för Little Cyan Fish, så du behöver bara lösa fallet där $m = 1$. Med andra ord, givet en rad med $n$ rutor vill du dela in dessa rutor i flera segment (varje segment innehåller helt och hållet ett antal på varandra följande rutor), med kraven att:

  • Varje par av angränsande segment har olika längder;
  • Vissa rutor innehåller tal, och dessa tal anger antalet rutor i det segment som rutan tillhör.

Little Cyan Fish ber dig avgöra om det finns en giltig lösning för brädet. Om det finns en sådan måste du också skriva ut en giltig lösning vilken som helst.

Indata

Det finns flera testfall. Den första raden i indata innehåller ett enda heltal $T$ ($1 \le T$), som anger antalet testfall.

För varje testfall innehåller den första raden i indata ett heltal $n$ ($1 \le n \le 10^6$).

Nästa rad innehåller $n$ heltal $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Om $a_i = 0$ betyder det att inget tal är ifyllt i den $i$-te rutan. Annars betyder det att $a_i$ är ifyllt i den $i$-te rutan.

Det garanteras att summan av $n$ över alla testfall inte överstiger $10^6$.

Utdata

För varje testfall, om det inte finns något giltigt sätt att fylla i talen, skriv ut en enda rad med "No".

Annars innehåller den första raden i utdata strängen "Yes". Nästa rad skriver ut $n$ heltal, som representerar längden på det segment där varje ruta befinner sig i den lösning du konstruerat. Om det finns flera lösningar som uppfyller kraven kan du skriva ut vilken som helst av dem.

Exempel

Indata 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

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