本来想拿来练练优先队列嘞,结果发现自己写个挤来挤去的插队算法也挺好玩😆
#include <stdio.h>
typedef long long LL;
LL x, y;
LL d[4]={9000050,9000050,9000050,9000050};
int ans[4]={0,0,0,0};
int main(){
int n;
LL a, b, td;
scanf("%d%lld%lld",&n,&x,&y);
for(int i=0;i<n;i++){
scanf("%lld%lld",&a,&b);
td = (a-x)*(a-x)+(b-y)*(b-y);
if (td < d[0]){
d[2]=d[1];ans[2]=ans[1];
d[1]=d[0];ans[1]=ans[0];
d[0]=td;ans[0]=i;
}
else if (td < d[1]){
d[2]=d[1];ans[2]=ans[1];
d[1]=td;ans[1]=i;
}
else if (td < d[2]){
d[2]=td;ans[2]=i;
}
}
for(int i=0;i<3;i++){
printf("%d\n",ans[i]+1);
}
return 0;
}