# 題目: UVa 10954 - Add All

# 題目說明

題目說明了你的目標: 加全
例如 1 + 2 + 3
1 + 2 cost 3
3 + 3 cost 6
總共 cost 9


INPUT:
每筆資料的第一行有一個整數 N ,代表接下來有 N 個整數
N0 時結束程式


OUTPUT:
輸出全部相加所需最少的 cost

# 解題方法

priority queue 儲存資料 (升冪排序)
每次取最前 (小) 兩個做相加即可

# 參考程式碼

#include <iostream>
#include <queue>
using namespace std;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	int n;
	while (cin >> n && n) {
		priority_queue<int, vector<int>, greater<int>> line;
		int input, temp, result = 0;
		while (n--) cin >> input, line.emplace(input);
		
		while (line.size() > 1) {
			temp = line.top(), line.pop();
			temp += line.top(), line.pop();
			line.emplace(temp);
			result += temp;
		}
		cout << result << "\n";
	}
	return 0;
}

# 參考資料

https://www.larrysprognotes.com/UVa%20-%2010954/