아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

버스 노선 개편하기

면접 대비

시간 제한2초메모리 제한1024 MB

요약
직선 위에서 겹치는 구간을 합치되 요금은 더 낮은 쪽을 따르고, 개편이 끝난 뒤 남은 노선을 시작점 순서로 출력한다.
난이도

보통10점 중 5점

유형
구간, 정렬, 스택
정답자
아직 제출이 없습니다

문제

서강 나라에서는 일직선 도로를 따라 NN개의 버스 노선을 운영 중이다. 필요할 때마다 노선을 새로 만든 탓에 겹치거나 중복되는 노선이 많다. 복잡한 버스 노선에 지친 시민들을 위해 버스 노선을 개편하기로 했다.

각 버스 노선은 세 정수 SS, EE, CC로 나타낼 수 있으며, 구간 \[S,E]\[S,E]를 요금 CC로 운행한다는 뜻이다. 어떤 두 버스 노선의 구간이 한 점 이상에서 겹친다면, 두 구간을 합친 새 노선으로 대체한다. 이때 요금은 더 낮은 금액의 요금을 따르기로 했다. 버스 노선 개편은 구간이 겹치는 버스 노선이 없을 때까지 진행한다.

그림 D.1: 개편 전과 개편 후의 버스 노선도

버스 노선들의 정보가 주어지면, 개편이 끝난 후 버스 노선의 정보를 출력하는 프로그램을 작성하자.

입력

첫 번째 줄에 버스 노선의 수 NN이 주어진다. (1≤N≤200,0001 \le N \le 200\\,000)

두 번째 줄부터 NN개의 줄에 각 버스 노선을 나타내는 세 정수 SS, EE, CC가 주어진다. (0≤S< E≤1090 \le S \lt E \le 10^9, 1≤C≤1091 \le C \le 10^9)

출력

첫 번째 줄에 개편이 끝난 후의 버스 노선의 수 KK를 출력한다.

두 번째 줄부터 KK개의 줄에 개편 후 각 버스 노선의 SS, EE, CC를 SS가 작은 순서대로 출력한다.

예제2

  1. 예제 1

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

    입력
    5
    1 2 4
    3 7 3
    8 9 5
    10 14 10
    17 18 3
    
    예상 출력
    5
    1 2 4
    3 7 3
    8 9 5
    10 14 10
    17 18 3