#include <bits/stdc++.h>
using namespace std;
queue<long long> q, u;
long long n, a[10000005], b[100005], da = 0;
int main(){
scanf("%lld", &n);
for(int i = 1;i<=n;i++){
scanf("%lld", &a[i]);
b[a[i]]++;
}
for(int i = 1;i<=100000;i++){
for(int j = 1;j<=b[i];j++){
q.push(i);
}
}
while(u.size() + q.size()>=2){
if(!u.empty()&&q.front()>u.front()){
int x = u.front();
u.pop();
if(u.front()<q.front()){
u.push(u.front() + x);
u.pop();
}else{
u.push(x + q.front());
q.pop();
}
}else if(!u.empty()){
int x = q.front();
q.pop();
if(u.front()<q.front()){
u.push(u.front() + x);
u.pop();
}else{
u.push(x + q.front());
q.pop();
}
}else{
int x = q.front();
q.pop();
u.push(q.front() + x);
q.pop();
}
da += u.back();
while(q.empty()||!u.empty()&&u.front()>q.back()){
q.push(u.front());
u.pop();
}
}
printf("%lld", da);
return 0;
}
以上代码在洛谷提交:https://www.luogu.com.cn/record/199956570
#2 应输出 175 实际输出 153
而在本地评测输出 175 ,有大佬可以帮蒟蒻看一下吗???