显示原始代码
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, a, b, c, d, x[N], y[N];
void ckmin(double &x, double y) {
if (y < x)
x = y;
}
double dist(int a, int b, int c, int d) { return sqrt((a - c) * (a - c) + (b - d) * (b - d)); }
double solve(int p) {
double res = 1e9;
if (a <= x[p] && x[p] <= c)
ckmin(res, 1.0 * abs(y[p] - b)), ckmin(res, 1.0 * abs(d - y[p]));
if (b <= y[p] && y[p] <= d)
ckmin(res, 1.0 * abs(x[p] - a)), ckmin(res, 1.0 * abs(c - x[p]));
ckmin(res, dist(x[p], y[p], a, d));
ckmin(res, dist(x[p], y[p], c, d));
ckmin(res, dist(x[p], y[p], a, b));
ckmin(res, dist(x[p], y[p], c, b));
return res;
}
int main(void) {
scanf("%d%d%d%d%d", &n, &a, &b, &c, &d);
for (int i = 1; i <= n; ++i) {
scanf("%d%d", &x[i], &y[i]);
}
double m = 1e9;
int p = -1;
for (int i = 1; i <= n; ++i) {
double d = solve(i);
if (d < m) {
m = d, p = i;
}
printf("%.9lf ", d);
}
puts("");
printf("%d\n", p);
return 0;
}