题目连接
http://118.190.20.162/view.page?gpid=T113
思路
了解一下排序器就行
解法
public class jiancedian {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int x = scanner.nextInt();
int y = scanner.nextInt();
int[][] arr = new int[n][2];
for (int i = 0; i < n; i++) {
int xi = scanner.nextInt();
int yi = scanner.nextInt();
int distance = ((x-xi) * (x-xi)) + ((y-yi) * (y-yi));
arr[i][0] = i+1;
arr[i][1] = distance;
}
// 如果距离相等,那么按照编号升序,如果不等就按照距离升序
Arrays.sort(arr, (o1, o2) -> o1[1] == o2[1] ? o1[0]-o2[0] : o1[1]-o2[1]);
for (int i = 0; i < 3; i++) {
System.out.print(arr[i][0]+"\n");
}
}
}
总结
重点不是这道题的解法,而是在用CSP编译器遇见一个非常恶心的问题。
最后输出语句System.out.println(arr[i][0]);
编译报错了,傻逼CSP又不写哪里错误,搞得我一直在纠结自己的思路哪里有问题。
记得用System.out.print("\n")
这种方式换行