记录编号 378656 评测结果 AAAAAAAAAA
题目名称 [NOIP 2004]合并果子 最终得分 100
用户昵称 Gravatar+1s 是否通过 通过
代码语言 C++ 运行时间 0.033 s
提交时间 2017-03-04 15:19:34 内存使用 0.35 MiB
显示代码纯文本
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("fruit.in");
ofstream fout("fruit.out");
int n,a[10005],t;
const int OO=66666666;
void inte(int dat)
{
	a[++n]=dat;
	int t=dat;
	for(int i=n;;)
	{
		if(i==1)
		{
			a[i]=t;
			break;
		}
		if(t<a[i/2])
		{
			a[i]=a[i/2];
			i/=2;
		}
		else
		{
			a[i]=t;
			break;
		}
	}
}
void swap(int *a,int *b)
{
	int t=*a;
	*a=*b;
	*b=t;
}
void remo()
{
	a[1]=a[n];
	a[n]=OO;
	n--; 
	for(int i=1;;)
	{
		int j;
		if(i*2>n)
		{
			break;
		}
        if(a[i*2]<a[i*2+1])
        {                                                       
        	j=i*2;
		}
		else
		{
			j=i*2+1;
		}
		if(a[j]==OO)break;
		if(a[i]>a[j])
		{
			swap(a[i],a[j]);
			i=j;
		}
		else
		break;
	}
}
int main()
{
	for(int i=0;i<10005;i++) a[i]=OO;
	fin>>n;
	for(int i=1;i<=n;i++)
	{
		fin>>a[i];
	}
	sort(a+1,a+1+n);
	for(;n!=1;)
	{
		int o=a[1];
		remo();
		o+=a[1];
		remo();
		inte(o);
		t+=o;
	}
	fout<<t<<endl;
	return 0;
}