xx];
printf("%lld\n",max);
for(i=2;i<=n;i++)
{
max=0;
for(j=1;j<=n;j++) if(!bz[j])
{
if(distance>=dis[j])
{
t=ans+a[j];
}
else
{
t=ans+(dis[j]-distance)*2+a[j];
}
if(t>max)
{
max=t;
maxx=j;
}
}
if(distance<dis[maxx]) distance=dis[maxx];
ans=max;
printf("%lld\n",max);
bz[maxx]=true;
if(distance==maxdistance)//优化部分,判断是否已经到达最远住户处
{
k=0;
for(j=1;j<=n;j++) if(!bz[j])
{
sort[++k]=a[j];//要排序的都存进sort数组里
}
qsort(1,k);
for(j=1;j<=k;j++)
{
ans+=sort[j];
printf("%lld\n",ans);//排好序后依次输出,并更新ans
}
break;
}
}
return 0;
}
|