记录编号 362563 评测结果 AAAAAAAAAA
题目名称 [NOIP 2004]合并果子 最终得分 100
用户昵称 GravatarHeHe 是否通过 通过
代码语言 C++ 运行时间 0.175 s
提交时间 2017-01-07 18:49:13 内存使用 0.39 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;/*
#define is_num(_F_tmp) (_F_tmp<='9'&_F_tmp>='0')
int fast_read()
{
	char _f_tmp(getchar());
	int _f_res(0);
	while(!is_num(_f_tmp))_f_tmp=getchar();
	while(is_num(_f_tmp))
	  _f_res=(_f_res<<1)+(_f_res<<3)+_f_tmp-'0',
	  _f_tmp=getchar();
	return _f_res;
}*/
#define MAXN 10000
int num[MAXN],p[MAXN],n,ans;
void px(int l,int r)
{
	if(l==r)return ;
	int mid=((l+r)>>1);
	px(l,mid),px(mid+1,r);
	int i(l),j(mid+1),k(l);
	while(i<=mid&&j<=r)
	  if(num[i]>num[j])p[k++]=num[i++];
	    else p[k++]=num[j++];
	while(i<=mid)p[k++]=num[i++];
	while(j<=r)p[k++]=num[j++];
	for(int d=l;d<=r;d++)
	  num[d]=p[d];
	return ;
}
void inset(int _num)
{
	int i=n;n++;
	while(num[i]<_num&&i>=0)
	  num[i+1]=num[i],i--;
	num[i+1]=_num;
}
int main()
{
	freopen("fruit.in","r",stdin);
	freopen("fruit.out","w",stdout);
	scanf("%d",&n);
	for(int i=0;i<n;i++)
	  scanf("%d",num+i);
	px(0,n-1);
	while(n>1)
	{
		int k=num[n-1]+num[n-2];
		ans+=k;
//		cout<<k<<"\n";
		n-=2;
		inset(k);
	}
	cout<<ans;
	return 0;
}