N의 최대가 100,000이므로 O(nlogn)의 알고리즘을 쓰면, O(10^6*5.xx)이므로 가능할것으로 판단된다.
-> 자바의 대부분 정렬알고리즘이 O(nlogn)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
import java.io.IOException;
import java.util.Arrays;
public class Main {
public static int[][] A;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
A = new int[N][2];
for(int i=0; i<N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
A[i][0] = Integer.parseInt(st.nextToken());
A[i][1] = Integer.parseInt(st.nextToken());
}
Arrays.sort(A,(o1, o2) -> {
if(o1[0] == o2[0]) {
return Integer.compare(o1[1],o2[1]);
} else {
return Integer.compare(o1[0], o2[0]);
}
});
for(int i=0; i<N; i++) {
System.out.println(A[i][0] + " " + A[i][1]);
}
}
}