Login with GitHub. Nope?
修正 C++ 的程式碼在使用一定量動態記憶體後會產生 RF 的問題 @ 2019/12/6 4:45pm NeoHOJ 強勢復活中 (Open beta)
Submit  Ranklist

Problem : 395 - 搬磚塊

Special Judge

Problem Statistics

Solved Member: 31  Submission: 53  User Tried: 32

Statement:

Rliak 最近閒閒沒事做,於是去工地找了一份工作。
工頭看 Rilak 一副文弱書生樣,只好請他做最輕鬆的工作:搬磚塊。(這哪裡毛輕鬆 (╯-_-)╯ ~╩╩)

工地裡總共有 N 個地點依序由 1 標號到 N。最初第 i 個地點有 Ai 個磚塊,而 Rilak 的目標是讓第 i 個地點變成 Bi 個磚塊。

因為 Rilak 力氣有限,他每次只能將某一塊磚塊從任一個地點搬到另一個地點,你能不能幫 Rliak 規劃出一個搬運次數最少的計畫呢?

Input:Output:

輸入總共有 3 行。
第一行有一個整數 N,代表有幾個地點。
第二行有 N 個整數,兩整數之間隔一個空白,依序為 A1, A2, ..., AN,代表每個地點最初有幾個磚塊。
第三行有 N 個整數,兩整數之間隔一個空白,依序為 B1, B2, ..., BN,代表 Rilak 對每個地點磚塊數量的最終目標。

2 ≤ N ≤ 100
0 ≤ Ai, Bi ≤ 100
A 數列總和與 B 數列總和相等 (不可能搬一搬磚塊變多或變少嘛!)

在佔分 20% 的測試資料中,我們保證 N, Ai, Bi ≤ 10。
輸出的第一行,請輸出最少搬運次數。
接下來有若干行(視搬運次數而定),每次搬運請輸出一行,包含兩個數字 a, b,代表從第 a 個地點搬運到第 b 個地點。

如果有多組解請輸出任何一組即可。

Sample Input:Sample Output:

3
1 2 3
3 2 1
2
3 1
3 1

Source:

104資奧校內初選

Problem Setter

Testdata:

TestTimeMemoryScore
0500ms262144kb
1500ms262144kb10
2500ms262144kb10
3500ms262144kb10
4500ms262144kb10
5500ms262144kb10
6500ms262144kb10
7500ms262144kb10
8500ms262144kb10
9500ms262144kb10
10500ms262144kb10