思路:利用结构体,封装距每个监测点的距离,监测点编号以及坐标,利用冒泡排序从小到大排列,取前三个编号。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,X,Y;
typedef struct Distance{
int x,y;
int num;
int length;
}distan;
int main()
{
cin>>n>>X>>Y;
distan d[1001];
for(int i=1;i<=n;i++){
cin>>d[i].x>>d[i].y;
d[i].num=i;
}
for(int i=1;i<=n;i++){
d[i].length=(d[i].x-X)*(d[i].x-X)+(d[i].y-Y)*(d[i].y-Y);
}
//冒泡从小到大排序
for(int i=1;i<n;i++){
for(int j=1;j<n;j++){
if(d[j].length>d[j+1].length){
distan temp=d[j+1];
d[j+1]=d[j];
d[j]=temp;
}
}
}
for(int i=1;i<=3;i++){
cout<<d[i].num<<endl;
}
}