显示原始代码
#include <iostream>
#include <cmath>
#include <vector>
#include <iomanip>
using namespace std;
double cal(double x, double y, double x1, double y1, double x2, double y2) {
if (x < x1) {
if (y < y1) {
return sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1));
} else if (y > y2) {
return sqrt((x - x1) * (x - x1) + (y - y2) * (y - y2));
} else {
return x1 - x;
}
} else if (x > x2) {
if (y < y1) {
return sqrt((x - x2) * (x - x2) + (y - y1) * (y - y1));
} else if (y > y2) {
return sqrt((x - x2) * (x - x2) + (y - y2) * (y - y2));
} else {
return x - x2;
}
} else {
if (y < y1) {
return y1 - y;
} else {
return y - y2;
}
}
}
int main() {
int n;
cin >> n;
double X1, Y1, X2, Y2;
cin >> X1 >> Y1 >> X2 >> Y2;
vector<pair<double, double>> miners(n);
vector<double> distances(n);
double min_dist = 1e9;
int min_index = -1;
for (int i = 0; i < n; ++i) {
cin >> miners[i].first >> miners[i].second;
distances[i] = cal(miners[i].first, miners[i].second, X1, Y1, X2, Y2);
if (distances[i] < min_dist) {
min_dist = distances[i];
min_index = i + 1;
}
}
for (double dist : distances) {
cout << fixed << setprecision(9) << dist << " ";
}
cout << endl;
cout << min_index << endl;
return 0;
}