Universal Cup Judging System

Universal Cup

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

Sau khi luyện tập kỹ năng giải Fillomino, Little Cyan Fish quyết định rèn luyện thêm trong trò chơi "The Artisan of Glimmith".

Trước tiên, Little Cyan Fish giới thiệu luật chơi của Fillomino cho bạn:

Đối với một lưới hình chữ nhật gồm $m$ hàng và $n$ cột, hãy chia lưới thành một số vùng (các ô trong mỗi vùng phải kề cạnh với nhau), sao cho hai vùng kề nhau bất kỳ có diện tích khác nhau. Một số ô trong lưới đã được điền sẵn các con số. Con số đó cho biết diện tích của vùng mà ô đó thuộc về.

problem_18007_e875ed6aff86064e6bfc40f5b6e7c6a4.png

Một ví dụ về câu đố Fillomino. Nguồn: Puzzle GP 2022 R4

Bây giờ, Little Cyan Fish đưa cho bạn một bảng Fillomino, và cậu ấy muốn xây dựng một lời giải hợp lệ bất kỳ cho câu đố Fillomino này.

Tất nhiên, bài toán này quá khó đối với Little Cyan Fish, vì vậy bạn chỉ cần giải quyết trường hợp $m = 1$. Nói cách khác, cho một hàng gồm $n$ ô, bạn muốn chia các ô này thành một số đoạn (mỗi đoạn chứa trọn vẹn một số ô liên tiếp), sao cho thỏa mãn:

  • Hai đoạn kề nhau bất kỳ có độ dài khác nhau;
  • Một số ô có chứa các con số, và những con số này cho biết số lượng ô trong đoạn mà ô đó thuộc về.

Little Cyan Fish yêu cầu bạn xác định xem có tồn tại lời giải hợp lệ nào cho bảng hay không. Nếu tồn tại, bạn cũng cần in ra một lời giải hợp lệ bất kỳ.

Dữ liệu vào

Có nhiều bộ dữ liệu. Dòng đầu tiên của dữ liệu vào chứa một số nguyên duy nhất $T$ ($1 \le T$), cho biết số lượng bộ dữ liệu.

Đối với mỗi bộ dữ liệu, dòng đầu tiên chứa một số nguyên $n$ ($1 \le n \le 10^6$).

Dòng tiếp theo chứa $n$ số nguyên $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). Nếu $a_i = 0$, điều đó có nghĩa là không có số nào được điền vào ô thứ $i$. Ngược lại, điều đó có nghĩa là $a_i$ được điền vào ô thứ $i$.

Đảm bảo rằng tổng của $n$ trên tất cả các bộ dữ liệu không vượt quá $10^6$.

Kết quả

Đối với mỗi bộ dữ liệu, nếu không tồn tại phương án điền số hợp lệ nào, hãy in ra một dòng duy nhất "No".

Ngược lại, dòng đầu tiên của kết quả chứa xâu "Yes". Dòng tiếp theo in ra $n$ số nguyên, biểu diễn độ dài của đoạn chứa từng ô tương ứng trong phương án mà bạn đã xây dựng. Nếu có nhiều phương án thỏa mãn yêu cầu, bạn có thể in ra bất kỳ phương án nào trong số đó.

Ví dụ

Dữ liệu vào 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

Kết quả 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.