만드는 중입니다

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

밧줄에 묶인 풍선

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

요약
지면에 고정된 닻에 일정한 길이의 밧줄로 묶인 풍선이 모든 밧줄을 팽팽하게 유지하고 서로 엇갈리지 않으며 오르는 최대 높이를 구합니다.
난이도

어려움10점 중 9점

유형
기하, 이분 탐색, 수학
정답자
아직 제출이 없습니다

문제

땅에 놓인 풍선이 밧줄 한 개 이상으로 땅에 박힌 고정점과 이어져 있다. 각 밧줄은 풍선과 고정점을 잇기에 충분히 길고, 두 밧줄이 서로 교차하는 일은 없다. 그림 E-1이 이런 상황을 보여 준다.

그림 E-1: 땅 위의 풍선과 밧줄

이제 풍선이 떠오른다. 밧줄 연결을 모두 유지한 채 풍선이 얼마나 높이 올라가는지 구하자. 고정점의 위치는 움직이지 않는다. 밧줄의 길이와 고정점의 위치가 주어진다. 밧줄에는 무게가 없어서 어느 방향으로 당겨도 곧게 펴진다고 가정해도 된다. 풍선은 올라가면서 옆으로도 움직일 수 있으므로 수평 위치는 자유롭다. 그림 E-2는 그림 E-1의 상황에서 풍선이 도달하는 가장 높은 위치다.

그림 E-2: 풍선이 도달하는 가장 높은 위치

입력

입력은 데이터 세트 여러 개로 이루어지고, 각 데이터 세트의 형식은 다음과 같다.

n
x1 y1 l1
...
xn yn ln

데이터 세트의 첫 줄에는 밧줄의 개수를 뜻하는 정수 nn (1≤n≤101 \le n \le 10)이 주어진다. 이어지는 nn개의 줄에는 정수 xix_i, yiy_i, lil_i가 공백 하나로 구분되어 주어진다. Pi=(xi,yi)P_i = (x_i, y_i)는 ii번째 밧줄이 연결된 고정점의 위치이고, lil_i는 그 밧줄의 길이다. −100≤xi≤100-100 \le x_i \le 100, −100≤yi≤100-100 \le y_i \le 100, 1≤li≤3001 \le l_i \le 300이다. 풍선은 처음에 땅 위의 (0,0)(0, 0)에 있다. 풍선과 고정점의 크기는 무시한다.

i≠ji \ne j이면 PiP_i와 PjP_j는 서로 다른 위치다. 또 PiP_i와 (0,0)(0, 0) 사이의 거리는 li−1l_i - 1 이하다. 즉 풍선은 적어도 높이 11까지는 올라간다.

그림 E-1과 E-2는 공개 테스트 케이스의 첫 데이터 세트에 해당한다.

입력의 끝은 00 하나만 있는 줄로 표시된다.

출력

각 데이터 세트마다 풍선이 도달하는 최대 높이를 소수점 아래 일곱째 자리까지 반올림해 한 줄에 출력한다. 자리가 비면 00을 채워 소수점 아래 일곱 자리를 항상 모두 적는다. 그 밖의 문자는 출력하지 않는다. 모든 테스트 데이터의 정답은 반올림 경계에서 10−910^{-9} 이상 떨어져 있으므로 반올림 방향이 애매한 경우는 없다.

예제1

  1. 예제 1

    입력
    3
    10 10 20
    10 -10 20
    -10 10 120
    1
    10 10 16
    2
    10 10 20
    10 -10 20
    2
    100 0 101
    -90 0 91
    2
    0 0 53
    30 40 102
    3
    10 10 20
    10 -10 20
    -10 -10 20
    3
    1 5 13
    5 -3 13
    -3 -3 13
    3
    98 97 168
    -82 -80 193
    -99 -96 211
    4
    90 -100 160
    -80 -80 150
    90 80 150
    80 80 245
    4
    85 -90 290
    -80 -80 220
    -85 90 145
    85 90 170
    5
    0 0 4
    3 0 5
    -3 0 5
    0 3 5
    0 -3 5
    10
    95 -93 260
    -86 96 211
    91 90 177
    -81 -80 124
    -91 91 144
    97 94 165
    -90 -86 194
    89 85 167
    -93 -80 222
    92 -84 218
    0
    
    예상 출력
    17.3205081
    16.0000000
    17.3205081
    13.8011200
    53.0000000
    14.1421356
    12.0000000
    128.3928757
    94.1879092
    131.1240816
    4.0000000
    72.2251798