讨论 / 为什么不对???
上官浅唱 2017-02-13 09:38:20
点我顶贴 收藏 删除
#include<iostream>

#include<cstdlib>

#include<cstdio>

#include<algorithm>

int m[10005];

int b[10005];

using namespace std;

int main()

{

/*freopen("fruit.in","r",stdin);

freopen("fruit.out","w",stdout);*/

int i,j,n,s=0;

scanf("%d",&n);

int r=0,min,max=100000;

long long ans;

ans=0;

for(i=1;i<=n;i++)

scanf("%d",&m[i]);

sort(m+1,m+n+1);

int p=1;

int q=1;

m[n+1]=max;

m[n+2]=max;

for(i=1;i<=n;i++)

b[i]=max;

while(s<n-1)

{

if(m[p]+m[p+1]>m[p]+b[q]) min=m[p]+b[q];

else min=m[p]+m[p+1];

if(min>b[q]+b[q+1]) min=b[q]+b[q+1];

r=r+1;

b[r]=min;

ans+=min;

s++;

if(min==m[p]+m[p+1]) p=p+2;

if(min==m[p]+b[q])

{

p=p+1;

q=q+1;

}

if(min==b[q]+b[q+1]) q=q+2;

}

printf("%lld",ans);

return 0;

}

#1 Acc@2017-04-06 23:11:18
回复 删除
我的也提示错误= =
#2 舒服的红心枕头@2017-11-03 07:55:11
回复 删除
垃圾

#3 lkw2333@2018-09-22 14:41:12
回复 删除
回复 #2 舒服的红心枕头你有什么资格骂别人zz

查看更多回复
提交回复