백준 11650 C++

yun·2024년 2월 12일
0

C++

목록 보기
36/41

#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 함수가 첫번째 원소의 오름차순으로 정렬하고, 첫 번째 원소가 같으면 두 번째 원소의 오름차순으로 정렬한다.

0개의 댓글