显示原始代码
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fir first
#define sec second
vector<pair<int, int>> a;
double dis(int xa, int ya, int xb, int yb) {
return sqrt(1.0 * (xa - xb) * (xa - xb) + 1.0 * (ya - yb) * (ya - yb));
}
double cal(int x, int y, int x1, int y1, int x2, int y2) {
if (x < x1 && y > y2)
return dis(x, y, x1, y2);
if (x >= x1 && x <= x2 && y > y2)
return dis(x, y, x, y2);
if (x > x2 && y > y2)
return dis(x, y, x2, y2);
if (x < x1 && y >= y1 && y <= y2)
return dis(x, y, x1, y);
if (x >= x1 && x <= x2 && y >= y1 && y <= y2)
return 0;
if (x > x2 && y >= y1 && y <= y2)
return dis(x, y, x2, y);
if (x < x1 && y < y1)
return dis(x, y, x1, y1);
if (x >= x1 && x <= x2 && y < y1)
return dis(x, y, x, y1);
if (x > x2 && y < y1)
return dis(x, y, x2, y1);
return 0;
}
signed main() {
int n;
scanf("%lld", &n);
a.resize(n);
int x1, y1, x2, y2;
scanf("%lld %lld %lld %lld", &x1, &y1, &x2, &y2);
for (int i = 0; i < n; i++) {
cin >> a[i].fir >> a[i].sec;
}
double mindis = 1e9;
int minid;
for (int i = 0; i < n; i++) {
double dist = cal(a[i].fir, a[i].sec, x1, y1, x2, y2);
printf("%.9lf ", cal(a[i].fir, a[i].sec, x1, y1, x2, y2));
if (dist < mindis) {
mindis = dist;
minid = i + 1;
}
}
printf("\n%d", minid);
return 0;
}