Universal Cup Judging System

Universal Cup

実行時間制限: 1.0 s メモリ制限: 1024 MB 満点: 100 難易度: [表示] ハック可能 ✓
統計

Setelah melatih keterampilan Fillomino, Little Cyan Fish memutuskan untuk berlatih lebih banyak pada permainan "The Artisan of Glimmith".

Little Cyan Fish pertama-tama memperkenalkan aturan Fillomino kepada Anda:

Untuk sebuah persegi panjang dengan $m$ baris dan $n$ kolom, bagilah kisi menjadi beberapa wilayah (sel-sel dari setiap wilayah harus terhubung secara ortogonal), sedemikian sehingga setiap dua wilayah yang bersebelahan memiliki luas yang berbeda. Beberapa sel dalam kisi sudah diisi dengan angka. Angka tersebut menunjukkan luas wilayah tempat sel itu berada.

problem_18007_e875ed6aff86064e6bfc40f5b6e7c6a4.png

Contoh teka-teki Fillomino. Sumber: Puzzle GP 2022 R4

Little Cyan Fish sekarang memberi Anda sebuah papan Fillomino, dan ia ingin mengonstruksi solusi valid apa pun untuk teka-teki Fillomino ini.

Tentu saja, masalah ini terlalu sulit bagi Little Cyan Fish, sehingga Anda hanya perlu menyelesaikan kasus ketika $m = 1$. Dengan kata lain, diberikan satu baris yang terdiri dari $n$ sel, Anda ingin membagi sel-sel ini menjadi beberapa segmen (setiap segmen sepenuhnya berisi beberapa sel berurutan), dengan syarat:

  • Setiap dua segmen yang bersebelahan memiliki panjang yang berbeda;
  • Beberapa sel berisi angka, dan angka-angka ini menunjukkan banyaknya sel pada segmen tempat sel tersebut berada.

Little Cyan Fish meminta Anda untuk menentukan apakah terdapat solusi yang valid untuk papan tersebut. Jika ada, Anda juga perlu mengeluarkan solusi valid apa pun.

Masukan

Terdapat beberapa kasus uji. Baris pertama dari masukan berisi sebuah bilangan bulat tunggal $T$ ($1 \le T$), yang menyatakan banyaknya kasus uji.

Untuk setiap kasus uji, baris pertama dari masukan berisi sebuah bilangan bulat $n$ ($1 \le n \le 10^6$).

Baris berikutnya berisi $n$ bilangan bulat $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Jika $a_i = 0$, itu berarti tidak ada angka yang diisikan pada sel ke-$i$. Jika tidak, itu berarti $a_i$ diisikan pada sel ke-$i$.

Dijamin bahwa jumlah $n$ di semua kasus uji tidak melebihi $10^6$.

Keluaran

Untuk setiap kasus uji, jika tidak terdapat skema pengisian angka yang valid, maka keluarkan satu baris "No".

Jika tidak, baris pertama dari keluaran berisi string "Yes". Baris berikutnya mengeluarkan $n$ bilangan bulat, yang menyatakan panjang segmen tempat masing-masing sel berada dalam skema yang Anda konstruksi. Jika terdapat beberapa skema yang memenuhi persyaratan, Anda dapat mengeluarkan yang mana saja.

Contoh

Masukan 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

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