题目链接
思路很简单,就是一个排序问题,采用结构体数组;
但是必须注意,“相同距离以排在前面的优先”,如果偷懒直接用qsort会只得70分哦。
排序采用冒泡排序的优化方法
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int x,y;
scanf("%d %d",&x,&y);
int i;
struct node{
int w;
long int s;
}a[205],temp;
for(i=0;i<n;i++){
int p,q;
scanf("%d %d",&p,&q);
a[i].s=(p-x)*(p-x)+(q-y)*(q-y);
a[i].w=i+1;
}
int t,j;
for(i=0;i<n-1;i++){
t=i;
for(j=i+1;j<n;j++){
if(a[j].s<a[t].s) t=j;
if(a[j].s==a[t].s&&a[j].w<a[t].w) t=j;
}
temp=a[i];a[i]=a[t];a[t]=temp;
}
for(i=0;i<3;i++)
printf("%d\n",a[i].w);
return 0;
}