似乎是内存问题?求调。
#include<bits/stdc++.h>
#define inf 0x7fffffff
typedef long long ll;
const int AN=1e5+5;
const int N=1e7+5;
ll t[AN];
int n;
int main(){
//freopen("P11186.in","r",stdin);
//freopen("P11186.out","w",stdout);
std::ios::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
std::cin>>n;
std::vector<ll> a(n+5);
for(int i=1;i<=n;i++){
std::cin>>a[i];
t[a[i]]++;
}
std::queue<ll> q1;
std::queue<ll> q2;
for(int i=1;i<=AN;i++){
for(int j=1;j<=t[i];j++){
q1.push(i);
}
}
// while(!q1.empty()){
// std::cout<<q1.front()<<" ";q1.pop();
// }
ll sum=0;
for(int i=1;i<n;i++){
ll x,y;
// if(!q1.empty())std::cout<<q1.front()<<" ";
// else std::cout<<"nan ";
// if(!q2.empty())std::cout<<q2.front()<<" ";
// else std::cout<<"nan ";
// std::cout<<sum<<"\n";
if(q2.empty()){
x=q1.front();q1.pop();y=q1.front();q1.pop();
q2.push(x+y);sum+=x+y;continue;
}else if(q1.empty()){
x=q2.front();q2.pop();y=q2.front();q2.pop();
q2.push(x+y);sum+=x+y;continue;
}else{
if(q1.front()<=q2.front()){
x=q1.front();q1.pop();
if(q1.empty()){
y=q2.front();q2.pop();q2.push(x+y);sum+=x+y;continue;
}else if(q2.empty()){
y=q1.front();q1.pop();q2.push(x+y);sum+=x+y;continue;
}else{
if(q1.front()<=q2.front()){
y=q1.front();q1.pop();q2.push(x+y);sum+=x+y;continue;
}else{
y=q2.front();q2.pop();q2.push(x+y);sum+=x+y;continue;
}
}
}else{
x=q2.front();q2.pop();
if(q1.empty()){
y=q2.front();q2.pop();q2.push(x+y);sum+=x+y;continue;
}else if(q2.empty()){
y=q1.front();q1.pop();q2.push(x+y);sum+=x+y;continue;
}else{
if(q1.front()<=q2.front()){
y=q1.front();q1.pop();q2.push(x+y);sum+=x+y;continue;
}else{
y=q2.front();q2.pop();q2.push(x+y);sum+=x+y;continue;
}
}
}
}
}
std::cout<<sum;
return 0;
}