-
问题链接:称检测点查询
-
问题分析:模拟法解决。
-
程序说明:n表示检测点的个数;X和Y表示市民所在位置
-
程序代码:
import java.util.Arrays;
import java.util.Scanner;
class Area implements Comparable{
public int x;
public int y;
public int code;
public int distance;
Area(int x1,int y1,int c,int d){
this.x = x1;
this.y = y1;
this.code = c;
this.distance = d;
}
@Override
public int compareTo(Object o) {//排序,首要按照距离从小到大排序,若距离相等,按照编号从小到大排序
Area area = (Area)o;
if(this.distance!=area.distance)
return this.distance-area.distance;
return this.code-area.code;
}
}
public class Main {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();
int X = reader.nextInt();
int Y = reader.nextInt();
Area[] areas = new Area[n];
for(int i=0;i<n;i++) {
int x1 = reader.nextInt();
int y1 = reader.nextInt();
int dis = (x1-X)*(x1-X)+(y1-Y)*(y1-Y);
areas[i] = new Area(x1,y1,i+1,dis);
}
Arrays.sort(areas);
System.out.println(areas[0].code);
System.out.println(areas[1].code);
System.out.println(areas[2].code);
}
}