숲

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

요약
서로 겹치지 않는 원들이 주어질 때, 다른 원에 막히지 않고 원점에서 보이는 원 중 가장 먼 원을 찾아 가장 가까운 점까지의 거리를 소수점 셋째 자리까지 출력한다.
난이도

보통10점 중 7점

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

문제

브루스 포스(Bruce Force)가 숲 속에 서 있다. 그는 다른 나무 줄기에 가려지지 않고 볼 수 있는 나무 줄기 중에서 가장 멀리 있는 것이 무엇인지 궁금하다.

브루스는 숲에 있는 나무들의 지도를 그렸다. 지도에서 그의 현재 위치는 직교좌표계의 원점이다. 나무 ii는 중심이 (xi,yi)(x_i, y_i)이고 반지름이 rir_i인 원으로 그려진다. 어떤 나무 줄기는, 원점 (0,0)(0, 0)에서 그 나무를 나타내는 원의 경계 위의 한 점까지 이은 선분이 다른 어떤 원과도 만나거나 닿지 않는 경우에 한하여 보인다고 한다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 번째 줄에는 지도 위에 있는 나무의 수를 나타내는 정수 nn (1≤n≤10001 \le n \le 1000)이 주어진다. 이어지는 nn개의 줄에는 각각 세 정수 xix_i, yiy_i, rir_i (−10000≤xi,yi≤10000-10000 \le x_i, y_i \le 10000, 1≤ri≤10001 \le r_i \le 1000)가 주어지며, (xi,yi)(x_i, y_i)는 나무 줄기 ii를 나타내는 원의 중심이고 rir_i는 그 반지름이다.

어떤 두 원도 서로 겹치지 않는다. 즉, 임의의 두 원에 대해 두 중심 사이의 거리는 두 반지름의 합보다 항상 크다. 또한 어떤 원도 원점을 포함하지 않는다.

마지막 테스트 케이스 다음에는 00 하나만 있는 줄이 온다.

출력

각 테스트 케이스마다, 원점에서 보이는 나무까지의 최대 유클리드 거리를 한 줄에 출력한다. 어떤 나무까지의 거리는 그 나무에서 원점에 가장 가까운 점까지의 거리, 즉 xi2+yi2−ri\sqrt{x_i^2 + y_i^2} - r_i로 측정하며, 그 점이 실제로 보이는지 여부는 상관하지 않는다.

답은 소수점 아래 셋째 자리까지 반올림하여 출력한다.

예제2

  1. 예제 1

    입력
    3
    10 10 11
    1 1 1
    -20 -10 20
    5
    1 2 2
    -2 1 1
    2 -1 1
    -1 -2 2
    10000 -10000 1000
    0
    
    예상 출력
    3.142
    1.236
    
  2. 예제 2

    입력
    1
    5 0 1
    0
    
    예상 출력
    4.000