만드는 중입니다

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

원 고르기

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

요약
반지름이 큰 원부터 차례로 골라, 고른 원과 교차하는 모든 남은 원을 제거한다. 각 원이 어느 원에 의해 제거되는지 구한다.
난이도

어려움10점 중 9점

유형
기하, 정렬, 분할 정복, 시뮬레이션
정답자
아직 제출이 없습니다

문제

평면 위에 원 c1,c2,…,cnc_1, c_2, \dots, c_n이 놓여 있다. 다음 과정을 반복한다.

  1. 반지름이 가장 큰 원 cic_i를 고른다. 반지름이 가장 큰 원이 여럿이면 그중 번호가 가장 작은 원을 고른다.
  2. cic_i와, cic_i에 겹치는 원을 모두 지운다. 두 원에 함께 포함되는 점이 하나라도 있으면 두 원은 겹친다. 어떤 점이 원의 내부에 있거나 원의 경계 위에 있으면 그 점은 그 원에 포함된다.
  3. 원이 하나도 남지 않을 때까지 1번과 2번을 반복한다.

원을 지워 나가는 과정을 그린 그림

cic_i를 지운 회차에서 고른 원이 cjc_j이면 cjc_j가 cic_i를 제거했다고 한다. 고른 원도 같은 회차에 지워지므로 자기 자신을 제거한 원이 될 수 있다. 각 원을 제거한 원의 번호를 구하라.

입력

첫째 줄에 원의 개수 nn이 주어진다 (1≤n≤3×1051 \le n \le 3 \times 10^5).

다음 nn개 줄 중 ii번째 줄에는 원 cic_i의 x좌표, y좌표, 반지름을 나타내는 정수 xix_i, yiy_i, rir_i가 주어진다 (−109≤xi,yi≤109-10^9 \le x_i, y_i \le 10^9, 1≤ri≤1091 \le r_i \le 10^9).

출력

첫째 줄에 정수 a1,a2,…,ana_1, a_2, \dots, a_n을 공백으로 구분해 출력한다. aia_i는 cic_i를 제거한 원의 번호다.

힌트

문제의 그림은 첫 번째 예제를 나타낸다.

예제3

  1. 예제 1

    입력
    11
    9 9 2
    13 2 1
    11 8 2
    3 3 2
    3 12 1
    12 14 1
    9 8 5
    2 8 2
    5 2 1
    14 4 2
    14 14 1
    
    예상 출력
    7 2 7 4 5 6 7 7 4 7 6
    
  2. 예제 2

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

    입력
    4
    0 0 3
    5 0 2
    11 0 2
    11 5 1
    
    예상 출력
    1 1 3 4