csp称检测点查询
#include<iostream> #include<algorithm> #include<vector> using namespace std; struct Point{ int number; int dd; Point(int nn,int ddd):number(nn),dd(ddd){} }; bool cmp(const Point &s,const Point &ss) { if(ss.dd==s.dd) return s.number<ss.number; else return s.dd<ss.dd; } int CalcDistance(int x1, int y1, int x2, int y2) { return (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); } int main() { int n,x,y; cin>>n>>x>>y; vector<Point>v; int xx,yy; for(int i=0;i<n;i++) { cin>>xx>>yy; int dis=CalcDistance(x,y,xx,yy); v.push_back(Point(i+1,dis)); } sort(v.begin(),v.end(),cmp); for (int i = 0; i < 3; i++) { cout << v[i].number << endl; } return 0; ///从近到远,依次输出距离该市民最近的三个检测点编号 }