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

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

원형 우리에 덮개 씌우기

면접 대비

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

요약
둘레가 C인 원 위에 시작 위치와 길이가 주어진 여러 호가 있을 때, 원 전체를 덮는 데 필요한 최소 호의 개수를 구한다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 투 포인터, 이분 탐색
정답자
아직 제출이 없습니다

문제

소들이 부끄러움을 많이 타서, 자신들이 이따금 모이는 원형 우리 둘레에 덮개를 둘러 주기를 바란다. 우리의 둘레 길이는 CC이다(1≤C≤1091 \le C \le 10^9). 농부 John은 MM개(1≤M≤1051 \le M \le 10^5)의 덮개 중에서 고를 수 있으며, 각 덮개는 시작 위치와 길이가 고정되어 있다. 이 덮개들을 적절히 고르면 우리 전체를 두를 수 있음이 보장된다.

ii번 덮개는 정수 위치 xix_i(0≤xi<C0 \le x_i < C)에 설치할 수 있다. 여기서 xix_i는 우리 위의 고정된 기준점에서 시계 방향으로 잰 거리이다. 덮개의 길이는 정수 lil_i(1≤li≤C1 \le l_i \le C)이며, xix_i에서 시작해 시계 방향으로 lil_i만큼 이어지는 연속된 호를 덮는다. 기준점을 지나면 우리를 한 바퀴 돌아 이어진다.

농부 John은 설치하는 덮개의 수를 최소로 하고 싶다. 우리의 둘레 전체를 덮는 데 필요한 덮개의 최소 개수를 구하여라.

둘레가 55인 우리를 생각하자. 아래 그림에서 두 개의 0은 우리 위의 같은 점을 나타낸다(1, 2, 3도 마찬가지이다). 사용할 수 있는 덮개는 세 개이다.

           Start   Length
      i     x_i     l_i
      1      0       1
      2      1       2
      3      3       3

        0   1   2   3   4   0   1   2   3  ...
corral: +---+---+---+---+--:+---+---+---+- ...
        11111               1111
            22222222            22222222
                    333333333333
            |..................|

22번과 33번 덮개를 설치하면 둘레의 다섯 칸을 모두 덮을 수 있다. 덮개끼리 겹쳐도 문제가 없으므로 겹침은 신경 쓰지 않아도 된다.

입력

  • 첫째 줄에 두 정수 CC와 MM이 공백으로 구분되어 주어진다.
  • 다음 MM개의 줄 중 ii번째 줄에는 ii번 덮개를 나타내는 두 정수 xix_i와 lil_i가 공백으로 구분되어 주어진다.

출력

  • 우리의 둘레 전체를 덮는 데 필요한 덮개의 최소 개수를 정수 하나로 출력한다.

예제2

  1. 예제 1

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

    입력
    10 4
    0 4
    3 4
    6 4
    9 4
    
    예상 출력
    3