202009(第一题)
#include<bits/stdc++.h> //注意学会使用结构体和相应的排序,直接记录好相应的编号 //避免使用堆这种数据结构来减少时间复杂度,编起来太复杂 using namespace std; const int maxn =2005; int n,x,y; struct node{ int id; double dis; }pos[maxn]; double get(double x,double y,double xx,double yy){ return (x-xx)*(x-xx) + (y -yy)*(y-yy); } bool cmp(node a,node b) { return a.dis==b.dis? a.id<b.id:a.dis<b.dis; //先看一下二者的距离是否相等,如果相等的话,返回id小的,否则返回距离小的 } int main(){ ios::sync_with_stdio(false),cin.tie(0),cout.tie(0); cin>>n>>x>>y; for(int i=1,tx,ty;i<=n;i++) { cin>>tx>>ty; pos[i].id = i; pos[i].dis = get(tx,ty,x,y); } sort(pos+1,pos+n,cmp); for(int i=1;i<=3;++i) cout<<pos[i].id<<endl; return 0; }