class Pair implements Comparable<Pair>{
long dist;
int i;
Pair(long dist , int i){
this.dist = dist;
this.i = i;
}
@Override
public int compareTo(Pair other){
return (int) (this.dist - other.dist);
}
}
class Solution {
public int[][] kClosest(int[][] points, int k) {
int n = points.length;
PriorityQueue<Pair> pq = new PriorityQueue<>();
for(int i = 0 ; i < n ; i ++){
int x = points[i][0];
int y = points[i][1];
long distOrigin = x*x + y*y;
pq.add(new Pair(distOrigin , i));
}
int[][] ans = new int[k][2];
for(int i = 0 ; i < k ; i ++){
Pair cp = pq.poll();
ans[i][0] = points[cp.i][0];
ans[i][1] = points[cp.i][1];
}
return ans;
}
}