| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
谁救救我啊~为什么总是WA啊~?谁有测试数据的啊?#include<stdio.h>
void min_heappify(long a[],long i,int n)
{
long l,r,min,tmp;
l=i*2; r=i*2+1;
if (l<=n&&a[l]<a[i])
min=l;
else
min=i;
if (r<=n&&a[r]<a[min])
min=r;
if (min!=i)
{
tmp=a[min];
a[min]=a[i];
a[i]=tmp;
min_heappify(a,min,n);
}
}
void build_min_heap(long a[],long n)
{
long i;
for (i=n/2;i>=1;--i)
min_heappify(a,i,n);
}
main()
{
long a[2000],n,i,min;
__int64 sum=0;
scanf("%ld",&n);
for (i=1;i<=n;i++)
scanf("%ld",&a[i]);
build_min_heap(a,n);
for(i=1;i<n-1;i++)
{
min=2;
if (a[2]>a[3]) min=3;
sum+=a[1]+a[min];
a[min]=a[1]+a[min];
a[1]=a[n-i+1];
min_heappify(a,1,n-i);
}
sum+=a[1]+a[2];
printf("%I64d",sum);
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator