HDU 1007 (最近点对问题) (二)

2014-11-24 03:09:16 · 作者: · 浏览: 2
m = d1 < d2 d1:d2;
for(i=l,k=0;i if(fabs(edge[m].x-edge[i].x)<=dm )
b[k++] = edge[i];
qsort(b,k,sizeof(b[0]),cmp_y);
for(i=0;i for(j=i+1;j {
tmp = dis(b[i],b[j]);
if(tmp }
return dm;

}
int main()
{
int n, i;
while(scanf("%d",&n),n)

{
for(i=0;i // #1 scanf("%lf%lf",&edge[i].x, &edge[i].y);
/* #2 */scanf("%lf%lf",&edge[i].y, &edge[i].x);
qsort(edge,n,sizeof(edge[0]),cmp_x);
double d = find(0,n);
printf("%.2lf\n",d/2);
}
return 0;
}
/*
#1 按x轴排序 果断TLE Time Limit Exceeded 1007 5000MS 1812K
#2 按y轴排序 AC Accepted 1007 1125MS 1840K
*/