本题对上次错误答案进行了修改,并没有对距离进行排序,而是直接对其进行了标记,最后只要输出最小的三个距离的标记就可以了。
#include<stdio.h>
#include<math.h>
int main(void) {
int n;
int x, y;
double sum[201] = { 0 };
int count[201] = { 0 };
int m = 0;
int index = 0;
scanf_s("%d %d %d", &n, &x, &y);
int a[201][2] = { 0 };
int i, j;
for (i = 0; i < n; i++)
{
scanf_s("%d %d", &a[i][0], &a[i][1]);
sum[i] = sqrt((a[i][0] - x) * (a[i][0] - x) + (a[i][1] - y) * (a[i][1] - y));
}
for (i = 0; i < n; i++)
{
index = 0;
for (j = 0; j < n; j++)
if (sum[j] < sum[index])
index = j;
count[m] = index;
sum[index] = 10000;
m++;
}
for (i = 0; i < 3; i++)
printf("%d\n", count[i] + 1);
return 0;
}