记录编号 101634 评测结果 AAAAAAAAAA
题目名称 平面上的最接近点对 最终得分 100
用户昵称 GravatarOI永别 是否通过 通过
代码语言 C++ 运行时间 0.086 s
提交时间 2014-05-13 16:38:40 内存使用 2.15 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
#define N 60005
#define pa pair <double, double>
#define fi first
#define se second
pa node[N], s[N];
int top = 0;
int n;
double sqr(double x){
	return x * x;
}

double dis(int x, int y){
	return sqrt(sqr(node[x].fi - node[y].fi) + sqr(node[x].se - node[y].se));
}

int main(){
	freopen("nearest.in", "r", stdin);
	freopen("nearest.out", "w", stdout);
	scanf("%d", &n);
	for (int i = 1; i <= n ; i++){
		scanf("%lf%lf", &node[i].fi, &node[i].se);
	}
	double ans = 1000000000000000000000000.0;
	sort(node + 1, node + 1 + n);
	for (int i = 1; i <= n; i ++){
		for (int j = i - 1; j >= max(1, i - 3); j --) {
			if (i == j) continue;
			ans = min(ans, dis(i, j));
		}
	}
	printf("%.4lf\n", ans);
	return 0;
}