본문 바로가기

Problem Solving/백준

[백준/C++] 11650번 좌표 정렬하기


#include <bits/stdc++.h>
using namespace std;

bool compare(pair<int,int> &a, pair<int,int> &b) {
    if(a.first == b.first) {
        return a.second < b.second;
    } return a.first < b.first;
}

int main() {
    int N;
    cin >> N;
    vector<pair<int,int>> arr(N);
    for(int i = 0; i < N; i++) {
        cin >> arr[i].first >> arr[i].second;
    }
    sort(arr.begin(), arr.end(), compare);

    for(int i = 0; i < N; i++) {
        cout << arr[i].first << " " << arr[i].second << "\n";
    }
}

페어를 사용하여 sort 함수를 조금 응용하여 pair를 sort할 수 있도록 구현하였습니다. 그런데 가장 빠른 sort를 썼음에도 불구하고 자꾸 시간초과가 떠서 알아보니 end은 메모리를 비우는 무거운 작업이 포함되어 시간초과가 뜬다는 것을 알게되었습니다.

 

자세한 사항은 아래에 링크로 참조하겠습니다.

https://www.acmicpc.net/board/view/22716

 

글 읽기 - 추가 설명 및 다른 언어 빠른 입출력 방법

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net


문제: https://www.acmicpc.net/problem/11650

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net