#include <iostream>
#include <utility>
#include <algorithm>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int N;
cin >> N;
pair<int, int> points[N];
for (int i = 0; i < N; ++i)
{
int x, y;
cin >> x >> y;
pair<int, int> point = make_pair(x, y);
points[i] = point;
}
sort(points, points+N);
for (auto& point : points) {
cout << point.first << " " << point.second << "\n";
}
return 0;
}
- algorithm 헤더에 내장된 sort 함수의 정렬 방식은 Strict weak ordering을 따른다. 커스텀 compare 함수 작성 시 아래 규칙을 지키지 못하면 런타임 에러가 발생한다.
- Irreflexibility 비반사성: 모든 x에 대해 x < x는 거짓
- Asymmetry 비대칭성: 모든 x, y에 대해 x < y이면 y < x는 거짓
- Transitivity 추이성: 모든 x, y, z에 대해 x < y이고 y < z이면 x < z
- Transivitity of incomparability 동등성의 추이성: 모든 x, y, z에 대해 x == y이고 y == z이면 x == z
- 이 문제를 해결하기 위해서는 compare 함수를 따로 작성하지 않아도 된다. 내장 compare 함수가 첫번째 원소의 오름차순으로 정렬하고, 첫 번째 원소가 같으면 두 번째 원소의 오름차순으로 정렬한다.