Universal Cup Judging System

Universal Cup

Time Limit: 1.0 s Memory Limit: 1024 MB Total points: 100 Difficulty: [show] Hackable ✓
Statistics

بعد التدرب على مهارات لعبة فيلومينو (Fillomino)، قرر Little Cyan Fish التدرب أكثر في لعبة "The Artisan of Glimmith".

يقدم لك Little Cyan Fish أولاً قواعد لعبة فيلومينو:

بالنسبة لمستطيل مكون من $m$ صفوف و $n$ أعمدة، قسّم الشبكة إلى عدة مناطق (يجب أن تكون خلايا كل منطقة متصلة أفقيًا أو رأسيًا)، بحيث تكون لأي منطقتين متجاورتين مساحتان مختلفتان. بعض الخلايا في الشبكة تحتوي بالفعل على أرقام مكتوبة بداخلها. يشير الرقم إلى مساحة المنطقة التي تنتمي إليها تلك الخلية.

problem_18007_e875ed6aff86064e6bfc40f5b6e7c6a4.png

مثال على لغز فيلومينو. المصدر: Puzzle GP 2022 R4

يعطيك Little Cyan Fish الآن لوحة فيلومينو، ويريد بناء أي حل صالح لهذا اللغز.

بالطبع، هذه المسألة صعبة للغاية بالنسبة لـ Little Cyan Fish، لذا تحتاج فقط إلى حل الحالة التي يكون فيها $m = 1$. بعبارة أخرى، بالمعطى صف مكون من $n$ خلايا، تريد تقسيم هذه الخلايا إلى عدة قطع (تحتوي كل قطعة بالكامل على عدة خلايا متتالية)، مع اشتراط ما يلي:

  • أي قطعتين متجاورتين لهما طولان مختلفان؛
  • تحتوي بعض الخلايا على أرقام، وتشير هذه الأرقام إلى عدد الخلايا في القطعة التي تنتمي إليها هذه الخلية.

يطلب منك Little Cyan Fish تحديد ما إذا كان يوجد حل صالح للوحة. وإذا كان موجودًا، فعليك أيضًا طباعة أي حل صالح.

الإدخال

توجد عدة حالات اختبار. يحتوي السطر الأول من الإدخال على عدد صحيح واحد $T$ ($1 \le T$)، يشير إلى عدد حالات الاختبار.

لكل حالة اختبار، يحتوي السطر الأول من الإدخال على عدد صحيح $n$ ($1 \le n \le 10^6$).

يحتوي السطر التالي على $n$ من الأعداد الصحيحة $a_1, a_2, \dots, a_n$ ($0 \le a_i \le n$). إذا كان $a_i = 0$، فهذا يعني أنه لم يُملأ أي رقم في الخلية رقم $i$. وإلا، فهذا يعني أنه قد مُلئ الرقم $a_i$ في الخلية رقم $i$.

من المضمون أن مجموع $n$ عبر جميع حالات الاختبار لا يتجاوز $10^6$.

الإخراج

لكل حالة اختبار، إذا لم تكن هناك أي طريقة صالحة لملء الأرقام، فاطبع سطرًا واحدًا يحتوي على "No".

وإلا، فإن السطر الأول من الإخراج يحتوي على السلسلة "Yes". ويطبع السطر التالي $n$ من الأعداد الصحيحة، تمثل طول القطعة التي تقع فيها كل خلية في الطريقة التي قمت ببنائها. إذا كانت هناك عدة طرق تفي بالمتطلبات، فيمكنك طباعة أي منها.

مثال

الإدخال 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

الإخراج 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.