UVA 10245

  最近点对问题,可以用分治算法nlogn解出,但是实在不愿费劲了,直接暴力,注意下剪枝159ms飘过。

#include 
#include 
#include 
#include 
using namespace std;
struct test{
	double x,y;
}c[10010];
bool cmp(struct test a,struct test b)
{
	return a.x>n&&n){
		for(int i=1;i<=n;i++) cin>>c[i].x>>c[i].y;
		double ans=80000;
		sort(c+1,c+n+1,cmp);
		for(int i=1;i<=n;i++){
			double dx,dy;
			for(int j=i+1;j<=n&&(dx=c[j].x-c[i].x)=10000) continue;
				if((dy=c[j].y-c[i].y)>=ans) continue;
				if(dy>=10000) continue;
				ans=min(ans,sqrt(dy*dy+dx*dx));
			}
		}
		if(ans-10000>0.0000005) printf("INFINITY\n");
		else printf("%.4lf\n",ans);
	}
	return 0;
}


 

你可能感兴趣的:(UVA)