第一题
#include <iostream>
#include <algorithm>
using namespace std;
/*
我是分两步将其实现:
1. 一个结构体数组,算出所有的距离存储到该数组中;
2. 利用sort函数对其进行升序排序,得到距离该市民最近的三个检测点编号。
*/
int n, X, Y;
struct dist{
int num; //编号
int data; //距离
}d[201];
bool cmp(dist a, dist b){
if(a.data != b.data) return a.data < b.data;
return a.num < b.num;
}
int main(){
scanf("%d%d%d",&n,&X,&Y);
int x, y;
for(int i = 0; i < n; ++i){
scanf("%d%d",&x,&y);
d[i].data = (X - x) * (X - x) + (Y - y) * (Y - y);
d[i].num = i + 1;
}
//利用sort函数对d[i]进行升序排序,当距离相同时,对其编号也进行升序排序。
sort(d, d+n, cmp);
//输出前三个距离该市民最近的点
for(int i = 0; i < 3; ++i){
printf("%d\n",&d[i].num);
}
return 0;
}