시설물 사용 신청

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

요약
1 이상 N 이하의 모든 (i,j) 쌍에 대해 구간 (i,j)가 신청되었을 때, 필요한 최소 강의실 수를 구하고 각 신청을 강의실에 배정하는 방법을 출력한다.
난이도

어려움10점 중 8점

유형
그리디, 수학, 구현, 정렬
정답자
아직 제출이 없습니다

문제

경기과학고에서는 시설물 사용 신청 제도를 통해 강의실을 빌려서 공부할 수 있다. 시설물 사용을 신청하려면, 시설물을 사용하고자 하는 시간대의 시작 시각과 종료 시각을 명시해야 한다. 이때 사용 시작 시각 ss와 종료 시각 ee는 모두 NN 이하의 양의 정수여야 하며, s\<es\<e를 만족해야 한다. 이때 이 학생이 시설물을 사용하는 시간대를 (s,e)(s,e)로 표현하자.

서로 다른 두 학생이 한 강의실을 같은 시간대에 사용할 수 없다. 예를 들어, 두 학생이 각각 시간대 (2,4)(2,4)와 (3,5)(3,5)에 시설물 사용을 신청했다면 시간대 (3,4)(3,4)가 겹치므로 이 두 학생을 같은 강의실에 배정할 수 없다. 단, 한 학생의 시설물 사용 종료 시각과 다른 학생의 사용 시작 시각은 같을 수 있다. 예를 들어, 두 학생이 각각 시간대 (2,4)(2,4)와 (4,5)(4,5)에 신청했다면 두 학생은 같은 강의실에 배정할 수 있다.

오늘은 매우 많은 학생들이 시설물 사용을 신청했는데, 1≤i<j≤N1 \leq i < j \leq N인 모든 순서쌍 (i,j)(i, j)에 대해 시간대 (i,j)(i,j)에 정확히 한 건씩의 신청이 들어왔다. 시설물 사용 신청 시스템의 운영자인 여러분은, 사용되는 강의실의 수가 최소가 되게끔 각 신청 건을 강의실에 배정해야 한다.

필요한 최소 강의실이 몇 개인지, 이때 각 신청 건을 어떤 강의실에 배정해야 하는지 구해보자.

입력

첫 번째 줄에 양의 정수 NN이 주어진다.

출력

첫 번째 줄에 필요한 강의실의 최소 개수 MM을 출력하여라.

M≤1,000,000M \leq 1\\,000\\,000이라면, 두 번째 줄부터 MM개의 줄 중 ii번째 줄에, ii번째 강의실에 배정할 신청 건의 수 X_iX\_i와 X_iX\_i개 신청 건 각각에 대한 사용 시간대의 시작 시각과 종료 시각 ss와 ee를 공백으로 구분하여 출력하여라. 단, X_i>0X\_i > 0이어야 한다.

가능한 방법이 여러 가지라면, 그중 아무것이나 출력하여라.

M>1,000,000M > 1\\,000\\,000이라면 MM만 출력하여라.

제한

  • 2≤N≤1092\leq N \leq 10^9

예제3

  1. 예제 1

    입력
    3
    
    예상 출력
    2
    2 1 2 2 3
    1 1 3
    
  2. 예제 2

    입력
    4
    
    예상 출력
    4
    3 1 2 2 3 3 4
    1 1 3
    1 2 4
    1 1 4
    
  3. 예제 3

    입력
    12345678
    
    예상 출력
    38103941319921