만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

구간 병합

면접 대비

시간 제한1초메모리 제한128 MB

요약
n개의 닫힌 구간이 주어질 때, 겹치거나 맞닿은 구간을 모두 합쳐 서로 겹치지 않는 구간들을 오름차순으로 출력한다.
난이도

쉬움10점 중 3점

유형
정렬, 구간, 그리디, 배열
정답자
아직 제출이 없습니다

문제

nn개의 닫힌 구간 [ai,bi][a_i, b_i] (i=1,2,…,ni = 1, 2, \dots, n)이 주어진다. 이 구간들의 합집합은 서로 겹치지 않는 닫힌 구간들의 합으로 나타낼 수 있다. 구간의 개수가 최소가 되도록 하는 표현을 구하고, 그 구간들을 오름차순으로 출력하라. 두 구간 [a,b][a, b]와 [c,d][c, d]가 오름차순이라는 것은 a≤b<c≤da \le b < c \le d일 때만 성립한다.

다음을 수행하는 프로그램을 작성하라.

  • 표준 입력에서 구간들의 정보를 읽는다.
  • 위 조건을 만족하는, 서로 겹치지 않는 구간들을 계산한다.
  • 계산한 구간들을 오름차순으로 표준 출력에 쓴다.

입력

첫째 줄에 구간의 개수 nn이 주어진다 (3≤n≤500003 \le n \le 50000). 다음 nn개의 줄 중 ii번째 줄에는 구간 [ai,bi][a_i, b_i]을 나타내는 두 정수 aia_i와 bib_i가 공백 하나로 구분되어 주어진다. 각각 구간의 시작과 끝을 의미하며 1≤ai≤bi≤10000001 \le a_i \le b_i \le 1000000이다.

출력

계산한, 서로 겹치지 않는 모든 구간을 출력한다. 각 줄에는 구간 하나의 정보를 쓴다. 한 줄은 구간의 시작과 끝을 나타내는 두 정수를 공백 하나로 구분하여 구성한다. 구간들은 오름차순으로 출력해야 한다.

예제2

  1. 예제 1

    입력
    5
    5 6
    1 4
    10 10
    6 9
    8 10
    
    예상 출력
    1 4
    5 10
    
  2. 예제 2

    입력
    3
    7 8
    1 2
    4 5
    
    예상 출력
    1 2
    4 5
    7 8