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

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

폭발하는 지렁이 통조림

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

요약
각 통을 쏘았을 때 폭발 반경 안의 통들이 연쇄 폭발하는 과정을 따라가며, 총 몇 개의 통이 폭발하는지 통마다 구한다.
난이도

어려움10점 중 8점

유형
정렬, 이분 탐색, 그래프, DFS
정답자
아직 제출이 없습니다

문제

영어에는 "지렁이 통조림을 열다(open a can of worms)"라는 관용구가 있습니다. 뜻하지 않게 골치 아픈 문제를 스스로 불러온다는 의미입니다. 덜 알려진 이야기로, 폭발하는 지렁이가 든 통조림을 BB탄 총으로 쏘는 경우를 생각해 봅시다.

길고 곧은 울타리를 따라 폭발하는 지렁이 통조림 여러 개를 세워 둡니다. 통조림이 총에 맞으면 그 안의 지렁이가 모두 폭발합니다. 지렁이 종류마다 폭발 반경이 다르며, 각 통조림에는 한 종류의 지렁이만 들어 있습니다.

ii번째 통조림은 울타리 위 위치 xix_i에 있고 폭발 반경은 rir_i입니다. 위치 xx, 반경 rr인 통조림이 폭발하면, 그 통조림으로부터 거리 rr 이내에 있는 다른 모든 통조림, 즉 구간 [x−r, x+r][x - r,\ x + r] 안에 위치한 모든 통조림도 함께 폭발합니다. 이로 인해 연쇄 폭발이 일어날 수 있습니다. 각 통조림은 최대 한 번만 폭발하며, 더 이상 폭발할 통조림이 없을 때까지 이 과정이 계속됩니다.

정확히 한 개의 통조림만 총에 맞았고 그것이 유일하게 쏜 통조림이라고 할 때, 폭발하는 통조림이 모두 몇 개인지 구하세요.

입력

입력은 여러 개의 테스트 케이스로 이루어집니다. 각 테스트 케이스의 첫 줄에는 울타리 위 통조림의 개수를 나타내는 정수 nn (1≤n≤100,0001 \le n \le 100{,}000)이 주어집니다. 이어지는 nn개의 줄에는 각각 두 정수 xx (−109≤x≤109-10^9 \le x \le 10^9)와 rr (1≤r≤1091 \le r \le 10^9)이 주어지며, xx는 통조림의 위치, rr은 폭발 반경입니다. 같은 위치에 있는 통조림은 없습니다.

입력의 끝은 정수 00 하나만 있는 줄로 표시됩니다.

출력

각 테스트 케이스마다 nn개의 정수를 한 줄에 공백 하나로 구분하여 출력합니다. ii번째 정수는 입력 순서로 ii번째 통조림을 쏘았을 때 폭발하는 통조림의 개수입니다. 불필요한 공백을 출력하지 말고, 테스트 케이스 사이에 빈 줄도 출력하지 마세요.

예제3

  1. 예제 1

    입력
    3
    4 3
    -10 9
    -2 3
    12
    2 2
    7 7
    10 1
    19 3
    23 12
    29 8
    33 1
    35 17
    39 2
    40 1
    46 11
    52 3
    0
    
    예상 출력
    1 2 1
    1 3 1 1 9 9 1 9 2 2 9 1
    
  2. 예제 2

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

    입력
    3
    0 5
    5 1
    -5 1
    0
    
    예상 출력
    3 1 1