Anchored Balloon
Time limit1sMemory limit128 MB
Find the greatest height a balloon tied to ground anchors by fixed-length ropes can reach while all ropes hold and none cross.
- Level
Hard9 of 10
- Topics
- Geometry, Binary search, Math
- Solved
- No attempts yet
Problem
A balloon placed on the ground is connected to one or more anchors on the ground with ropes. Each rope is long enough to connect the balloon and its anchor, and no two ropes cross each other. Figure E-1 shows such a situation.

Figure E-1: A balloon and ropes on the ground
Now the balloon takes off. Find how high it rises while every rope connection holds. The anchors stay where they are. The lengths of the ropes and the positions of the anchors are given. The ropes have no weight, so a rope pulled in any direction straightens completely. The balloon may drift sideways as it rises, so its horizontal position is free. Figure E-2 shows the highest position of the balloon for the situation in Figure E-1.

Figure E-2: The highest position of the balloon
Input
The input consists of multiple datasets, each in the following format.
n
x1 y1 l1
...
xn yn ln
The first line of a dataset contains an integer (), the number of ropes. Each of the following lines contains three integers , , and , separated by a single space. is the position of the anchor holding the -th rope, and is the length of that rope. The values satisfy , , and . The balloon is initially placed at on the ground. Ignore the size of the balloon and of the anchors.
If , then and are different positions. The distance between and is at most , so the balloon always rises at least unit high.
Figures E-1 and E-2 correspond to the first dataset of the visible test case.
A line containing a single marks the end of the input.
Output
For each dataset, print on one line the maximum height the balloon reaches, rounded to seven digits after the decimal point. Pad with zeros so that all seven digits are always printed. Print no other characters. Every answer in the test data is at least away from a rounding boundary, so the rounding direction is never ambiguous.