#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); // 加速 cin.tie(0); int N; // 設立一個變數N表示接下來有N個數 while (cin>>N&&N>0){ // 當輸入的N大於0時,執行以下程式碼 // 設立一個最小堆積,用來存放數字 priority_queue<long long, vector<long long>, greater<long long>> minHeap; for (int i=0;i<N;i++){ int num; cin>>num; minHeap.push(num); // 將數字加入最小堆積中 } long long total_cost=0; // 設立一個變數total_cost,用來存放總和 while (minHeap.size()>1){ // 當最小堆積中有兩個以上的數字時,執行以下程式碼 long long a=minHeap.top();minHeap.pop(); // 取出最小堆積中的最小值,並將其從堆積中移除 long long b=minHeap.top();minHeap.pop(); // 取出最小堆積中的最小值,並將其從堆積中移除 long long sum=a+b; // 將兩個數字相加,得到一個新的數字 total_cost+=sum; // 將新的數字加入總和中 minHeap.push(sum); // 將新的數字加入最小堆積中 } cout<<total_cost<<endl; } return 0; }