问题描述
解题思路
自定义结构体P,将检测点编号和到居民位置距离的平方储存进去,利用 vector容器对自定义结构体类型的数据进行存放。储存好所有检测点后使用sort函数对容器里面的所有元素按照题目要求进行排序操作,之后将容器中前三个检测点的编号输出即可。
C++代码
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct P//自定义结构体 num表示编号 dis表示距离的平方
{
int num;
int dis;
P(int num1,int dis1)
{
num=num1;
dis=dis1;
}
};
bool comp(P val1,P val2)//用作排序规则
{
if(val1.dis!=val2.dis) return val1.dis<val2.dis;
else return val1.num<val2.num;
}
int main()
{
vector<P> v;//定义容器 用来存放检测点
int X,Y,x,y,n;
cin>>n>>X>>Y;
for(int i=1;i<=n;i++)//依次输入所有数据
{
cin>>x>>y;
v.push_back(P(i,(x-X)*(x-X)+(y-Y)*(y-Y)));
}
sort(v.begin(),v.end(),comp);//排序
for(int i=0;i<3;i++)//输出结果
{
cout<<v[i].num<<endl;
}
return 0;
}