Universal Cup Judging System

Universal Cup

Time Limit: 2.0 s Memory Limit: 2048 MB Total points: 100 Difficulty: [show] Communication
Statistics

זוהי בעיה רב-שלבית (multi-pass problem).

בארכיונים הדיגיטליים של קיבוטוס, פלאנה (Plana) גילתה אוסף של רשומות מסתוריות הידועות בשם יומנים דו-זמניים (Bitemporal Logs). כל יומן מורכב מ-$n$ רשומות המסומנות מ-$1$ עד $n$ ויוצרות עץ מכוון שורש. עם זאת, האילוצים המבניים משתנים בהתאם לשאלה האם זרימת הזמן היא רטרוספקטיבית (לוגיקה A) או פרוספקטיבית (לוגיקה B):

  • לוגיקה A: שורש העץ הוא ברשומה $1$; לכל רשומה אחרת $i$ יש הורה $p_i$ כך ש-$p_i < i$.
  • לוגיקה B: שורש העץ הוא ברשומה $n$; לכל רשומה אחרת $i$ יש הורה $q_i$ כך ש-$q_i > i$.

כדי לנתח את התכונות המבניות, פלאנה מגדירה שני סוגים של רשומות:

  • קצה (Terminal): רשומה שאינה משמשת כהורה לאף רשומה אחרת.
  • צומת מרכזי (Hub): רשומה המשמשת כהורה ללפחות רשומה אחרת אחת.

פלאנה הבחינה בסימטריה מושלמת הנקראת תהודה לוגית (Logical Resonance). תכונה זו מתקיימת בין יומן מלוגיקה A לבין יומן מלוגיקה B אם ורק אם:

$$\text{For every } i\text{, entry } i \text{ is a Terminal in Logic A} \iff \text{entry } i \text{ is a Hub in Logic B.}$$

פלאנה הוכיחה מתמטית שמספר היומנים התקפים מלוגיקה A ומלוגיקה B תחת אילוץ זה הוא זהה. כעת, היא מטילה עליכם לתכנן פרוטוקול תרגום אוניברסלי — פונקציה חד-חד-ערכית ועל (בייקציה) — להמרת פורמט יומן אחד למשנהו.

הערכת נכונות

הפתרון שלכם מורץ פעמיים בכל מבחן. בהרצה הראשונה, על הפתרון שלכם להמיר כל יומן מלוגיקה A ליומן מלוגיקה B המקיים את תנאי התהודה הלוגית. בהרצה השנייה, בהינתן יומן מלוגיקה B שנוצר על ידי ההרצה הראשונה שלכם, על הפתרון שלכם לשחזר בדיוק את יומן לוגיקה A המקורי.

הקלט של ההרצה השנייה מורכב מאותם יומני לוגיקה B שהוצאתם כפלט בהרצה הראשונה, ייתכן שבסדר שונה. עבור כל יומן לוגיקה B בקלט של ההרצה השנייה, עליכם להדפיס את יומן לוגיקה A המתאים לו. הפתרון שלכם ייחשב נכון אם עבור כל יומן לוגיקה B כזה, הפלט שלכם זהה לחלוטין ליומן לוגיקה A שיצר אותו בהרצה הראשונה.

כלי בדיקה מסופק כדי לסייע לכם בפיתוח ובבדיקת הפתרון שלכם.

קלט

השורה הראשונה של הקלט מכילה שני מספרים שלמים $r$ ($r \in \{1, 2\}$) ו-$T$ ($1 \le T \le 10^5$), המייצגים את מספר ההרצה ואת מספר מקרי הבדיקה.

עבור כל מקרה בדיקה, השורה הראשונה מכילה מספר שלם $n$ ($2 \le n \le 10^3$).

אם $r = 1$, השורה השנייה מכילה $n$ מספרים שלמים $p_1, p_2, \dots, p_n$ המייצגים את יומן לוגיקה A. מובטח כי $p_1 = 0$, וכי עבור $2 \le i \le n$, $1 \le p_i < i$ היא הרשומה שאליה מחוברת רשומה $i$. כאן אנו משתמשים ב-$0$ כדי לציין שלרשומה אין הורה (כלומר, היא השורש).

אחרת, אם $r = 2$, השורה השנייה מכילה $n$ מספרים שלמים $q_1, q_2, \dots, q_n$ המייצגים את יומן לוגיקה B. מובטח כי $q_n = 0$, וכי עבור $1 \le i \le n - 1$, $i < q_i \le n$ היא הרשומה שאליה מחוברת רשומה $i$.

מובטח כי סכום ערכי $n^2$ על פני כל מקרי הבדיקה אינו עולה על $10^7$.

פלט

אם $r = 1$, עבור כל מקרה בדיקה, הדפיסו $n$ מספרים שלמים מופרדים ברווח, $q_1, q_2, \dots, q_n$, המייצגים את יומן לוגיקה B המומר. חייב להתקיים $q_n = 0$, ועבור $1 \le i \le n - 1$ חייב להתקיים $i < q_i \le n$. תכונת התהודה הלוגית חייבת להתקיים: רשומה $i$ היא קצה בלוגיקה A אם ורק אם רשומה $i$ היא צומת מרכזי בלוגיקה B.

אחרת, אם $r = 2$, עבור כל מקרה בדיקה, הדפיסו $n$ מספרים שלמים מופרדים ברווח, $p_1, p_2, \dots, p_n$, המייצגים את יומן לוגיקה A המשוחזר.

דוגמה

דוגמה 1, מעבר 1

קלט
1 3
4
0 1 1 2
4
0 1 2 1
4
0 1 1 1
פלט
3 3 4 0
3 4 4 0
2 3 4 0

דוגמה 1, מעבר 2

קלט
2 3
4
2 3 4 0
4
3 3 4 0
4
3 4 4 0
פלט
0 1 1 1
0 1 1 2
0 1 2 1

הסבר לדוגמה 1

התאמה חד-חד-ערכית ועל תקפה אפשרית מוצגת להלן.

problem_16339_5fc56a9536f47de069054071a1fe22c7.png

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.