CSES 3159 - Replace with Difference

1.0s 512M

給你一個包含 \(n\) 個整數的陣列。你要對這個陣列做 \(n-1\) 次操作。

一次操作中,你會從陣列裡選兩個數 \(a\) 和 \(b\),把它們兩個都從陣列裡刪掉,再把 \(|a - b|\) 放進陣列。

你的任務是找出一組操作序列,使陣列最後剩下的那個數是 \(0\)。

輸入格式

第一行有一個整數 \(n\):陣列的長度。

下一行有 \(n\) 個整數 \(x_1, x_2,\dots, x_n\):陣列的內容。

輸出格式

輸出 \(n-1\) 行,每行有兩個整數 \(a\) 和 \(b\):每次操作所選的兩個數。任何一組合法答案皆可。

若無解,只輸出 \(-1\)。

範例輸入 1

5
2 7 4 12 1

範例輸出 1

2 12
7 10
4 1
3 3

說明:陣列的變化如下:

  • \([2, 7, 4, 12, 1] \rightarrow\) 移除 \(2\) 和 \(12\),加入 \(10\)

  • \([7, 4, 1, 10] \rightarrow\) 移除 \(7\) 和 \(10\),加入 \(3\)

  • \([4, 1, 3] \rightarrow\) 移除 \(4\) 和 \(1\),加入 \(3\)

  • \([3, 3] \rightarrow\) 移除 \(3\) 和 \(3\),加入 \(0\)

  • \([0]\):最後的陣列

限制

  • \(2 \le n \le 1000\)
  • \(1 \le x_i \le 1000\)

題目來源

CSES - Replace with Difference

題目來自 CSES Problem Set(Antti Laaksonen),授權 CC BY-NC-SA 4.0;本頁為翻譯,以相同授權分享。

題目頁說明

快速鍵

主要功能

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

限制

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