求 助
查看原帖
求 助
464732
luqyou楼主2022/1/28 22:19
#include<bits/stdc++.h>
using namespace std;
queue<int> a;
queue<int> b;
long long n,x[10000001],t1,t2,ans;
inline int read()
{
    int s=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9'){
        if(ch=='-')
            f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        s=s*10+ch-'0';
        ch=getchar();
    }
    return s*f;
}
inline void write(int x)
{
    if(x<0){
        putchar('-');
        x=-x;
    }
    if(x>9) 
        write(x/10);
    putchar(x%10+'0');
}
int main(){
	n=read();
	for(int i=1;i<=n;i++){
	    int kkk;
	    cin>>kkk;
	    x[kkk]++;
	}
	for(int i=1;i<=n;i++){
	    while(x[i]){
	        x[i]--;
	        a.push(i);
	    }
	}
	
	for(int i=1;i<=n-1;i++){
		int t1,t2;
		if((a.front()<b.front()&&!a.empty())||b.empty()) {
			t1=a.front();
			a.pop();
		}
		else {
			t1=b.front();
			b.pop();
		}
		if((a.front()<b.front()&&!a.empty())||b.empty()) {
		    t2=a.front();
			a.pop();
		}
		else{
			t2=b.front();
			b.pop();
		}
		ans+=t1+t2;;
		b.push(t1+t2);
	}
	write(ans);
	return 0;
} 
2022/1/28 22:19
加载中...