重組問題 (APCS 2025-01 中高級)

1.0s 256M

對於一個長度為 \(n\) 的整數陣列 \(a_1, a_2, \ldots, a_n\),已知 \(a_1=0\),定義其距離多重集

\[\Delta(a)=\{\,|a_i-a_j|\mid 1\le i<j\le n\,\}.\]

也就是陣列中任兩個數字的絕對值差所組成的多重集合,共有 \(\frac{n(n-1)}{2}\) 個數字。

現在給定 \(\Delta(a)\) 的內容。保證至少存在一個以 \(0\) 開頭的嚴格遞增 陣列能產生這個距離多重集。請輸出所有可能陣列中字典序最小與字典序 最大的陣列。

例如 \(n=3\) 且 \(\Delta=(3,4,7)\)。最大的距離 \(7\) 必定來自最小值 \(0\) 與最大值,因此陣列最大值是 \(7\)。剩下的點可能是 \(3\) 或 \(4\),所以可能的 陣列為 \((0,3,7)\) 與 \((0,4,7)\)。

輸入格式

第一行包含一個正整數 \(n\)。

第二行包含 \(\frac{n(n-1)}{2}\) 個正整數,表示距離多重集 \(\Delta\) 的 內容。當 \(n=1\) 時,第二行為空行。

限制

  • \(1\le n\le 25\)
  • \(\Delta\) 中的每個整數都介於 \(1\) 到 \(100\) 之間
  • 保證至少存在一個合法陣列

輸出格式

第一行輸出能產生 \(\Delta\) 的字典序最小陣列。

第二行輸出能產生 \(\Delta\) 的字典序最大陣列。

每個陣列輸出 \(n\) 個整數,相鄰兩數以一個空白分隔。

評分說明

每一筆測試資料的執行時間限制均為 1 秒,依正確通過的測試資料筆數給分。

子題 分數 額外限制
1 30 \(n\le 6\)
2 70 無額外限制

範例輸入 1

3
3 4 7

範例輸出 1

0 3 7
0 4 7

範例解釋 1

距離多重集 \((3,4,7)\) 可以由 \((0,3,7)\) 或 \((0,4,7)\) 產生,兩者分別是 字典序最小與最大的答案。

範例輸入 2

5
1 2 3 3 5 5 6 8 10 11

範例輸出 2

0 1 3 6 11
0 5 8 10 11

題目來源

2025 年 1 月 APCS 程式實作第 3 題: ZeroJudge q183「重組問題」

題目頁說明

快速鍵

主要功能

  • 範例測試 — 執行題目附帶的範例測資並自動比對預期輸出。
  • 自訂測試 — 自己貼 stdin 執行程式。可勾選「與預期輸出比對 (diff)」做行對行比對。
  • 模板 — 貼上你在個人資料設定的預設程式碼模板。
  • 協作 — 與其他同學共筆編輯這題的程式碼。
  • 自動草稿 — 編輯器內容每 1.5 秒自動存到瀏覽器(per 帳號 / 題目 / 語言)。
  • 提交 — 把程式碼交給 judge 評測,回傳 AC / WA / TLE 等結果。

限制

  • 程式碼最多 65,536 字元
  • 自訂測試 stdin 與預期輸出各最多 1 MB (約 100 萬字元)
  • 自訂測試與範例測試共用一個沙箱,每人約 3 秒 1 次 (範例測試 1 秒 1 次)
  • 自訂測試與範例測試都有 15 秒 牆鐘上限(正式評測仍依題目原本時限)
  • 互動題不提供自訂測試(無法模擬與 judge 互動)。
  • 提交評測本身沒有 rate limit,但同題短時間內多次提交會被視為刷分。