每次都找最小的两堆合并
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] nums = new int[n];
for (int i = 0; i < n; i++) {
nums[i] = sc.nextInt();
}
Queue<Integer> q = new PriorityQueue<>();
for (int num: nums) {
q.add(num);
}
int res = 0;
while (q.size() >= 2) {
int t = q.poll() + q.poll();
res += t;
q.add(t);
}
System.out.println(res);
}
}