用队列 Queue
package Dduo;
//Bhu Bigdata 1421
//Eslipse IDE 2020-08
//JDK 1.8
//2024/5/19
import java.util.Scanner;
import java.math.BigInteger;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int number;
number = scan.nextInt();
int price[] = new int[number];
for(int i=0;i<number;i++) {
price[i] = scan.nextInt();
}
long res = 0;
scan.close();
Arrays.sort(price);
int t = number-1;
//数据结构队列
Queue<Integer> queue = new LinkedList<>();
boolean flag = false;
while(t>=0) {
if(!queue.isEmpty()&&price[t]<=queue.peek()) {
//如果队列非空且价格小于队列的第一个元素。queue.peek只会获取队列头部元素,不会删除。
queue.poll();//出队列
}
else {
if(flag) {
queue.add(price[t]/2);
flag = false;
}
else {
flag = true;
}
res += price[t];
}
t--;
}
System.out.print(res);
}
}