记录编号 387911 评测结果 AAAAAAAAAA
题目名称 [NOIP 2004]合并果子 最终得分 100
用户昵称 GravatarGo灬Fire 是否通过 通过
代码语言 C++ 运行时间 0.009 s
提交时间 2017-03-27 20:28:46 内存使用 0.37 MiB
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
const int maxn=15000;
int a[maxn];
struct Heap{
	int size;
	Heap(){size=0;}
	inline bool empty(){return !size;}
	inline void clear(){size=0;}
	inline int top(){return a[1];}
	inline void down(register int x){
		register int son;
		for(son=x<<1;son<=size;x=son,son<<=1){
			if(son<size) if(a[son|1]<a[son]) son|=1;
			if(a[son]<a[x]) swap(a[son],a[x]);
			else break;
		}
	}
	inline void up(register int x){
		register int fa;
		for(fa=x>>1;fa;x=fa,fa>>=1){
			if(a[x]<a[fa])swap(a[fa],a[x]);
			else break;
		}
	}
	inline void pop(){
		swap(a[1],a[size--]);
		down(1);
	}
	inline void push(int temp){
		a[++size]=temp;
		up(size);
	}
}q;
int n;
inline void Read(register int & x){
	register bool f=0;register char ch;
	while(ch=getchar(),ch<'0' || ch>'9') if(ch=='-') f=1;
	x=ch-48;
	while(ch=getchar(),ch>='0' && ch<='9') x=x*10+ch-48;
	if(f) x=-x;
}
void Init();
int main(){
	freopen("fruit.in","r",stdin);freopen("fruit.out","w",stdout);
	Init();
	return 0;
}
void Init(){
	scanf("%d",&n);
	register int i,ans=0,x,y;
	for(i=1;i<=n;i++){
		Read(x);
		q.push(x);
	}
	while(!q.empty()){
		x=q.top();q.pop();ans+=x;
		if(q.empty())break;
		y=q.top();q.pop();ans+=y;
		if(q.empty())break;
		q.push(x+y);
	}
	printf("%d\n",ans);
}