发光二极管(LED)是一种半导体光源,当流过其引脚的电流电压超过阈值时会发光。ACM 研发部门最近报告称,他们成功开发了一种新型 LED,即 ACMOLED。ACMOLED 具有一种特殊特性,即随着电流电压的增加,其发光强度分两个阶段变化,如下图所示。
如图所示,ACMOLED 在电压从 $0$ 到 $V_1$ 的范围内不工作;当电压达到第一个阈值 $V_1$ 时,它发出强度为 $L_1 \ge 0$ 的光;当电压达到第二个阈值 $V_2$ 时,它发出强度为 $L_2 \ge L_1$ 的光。更具体地说,如果 $F(v)$ 是将电压 $v$ 映射到 ACMOLED 发光强度的函数,那么对于四个实数 $L_1, L_2, V_1, V_2$(满足 $0 \le L_1 \le L_2$ 且 $0 < V_1 < V_2$),我们有:
$$F(v) = \begin{cases} 0 & \text{if } 0 \le v < V_1 \\ L_1 & \text{if } V_1 \le v < V_2 \\ L_2 & \text{if } v \ge V_2 \end{cases}$$
目前的问题是,ACM 研发部门尚不知道两个阈值电压 $V_1$ 和 $V_2$ 的确切值,也不知道两个强度值 $L_1$ 和 $L_2$。研究人员计划通过重复实验来估计 ACMOLED 的这四个值。
实验通过施加特定电压的电流并观察 ACMOLED 发出的光强度来进行。在进行了 $n$ 次不同电压值的重复实验后,获得了 $n$ 个元组 $(v_i, l_i)$ 的数据,其中 $l_i$ 是电压 $v_i$ 下观测到的强度。由于观测设备的不精确性及其他原因,实验数据并不准确,可能包含一些误差。尽管如此,他们希望找到一个最佳估计强度函数 $F(v)$,以最小化以下误差函数:
$$\text{error}(F) = \max_{1 \le i \le n} |l_i - F(v_i)|$$
其中 $|x|$ 表示实数 $x$ 的绝对值。
对于给定的 $n$ 个元组数据,编写一个程序,找到一个能使上述误差函数最小化的估计强度函数 $F$,并输出 $\text{error}(F)$ 的值。
输入格式
程序需从标准输入读取数据。输入的第一行包含一个整数 $n$ ($1 \le n \le 300,000$),表示实验数据中元组 $(v_i, l_i)$ 的数量。接下来的 $n$ 行,每行包含两个整数,范围均在 $0$ 到 $10^9$ 之间,分别表示实验数据中每个元组 $(v_i, l_i)$ 的 $v_i$ 和 $l_i$。注意,你可以假设输入中不存在两个元组 $(v_i, l_i)$ 和 $(v_j, l_j)$ 满足 $1 \le i < j \le n$ 且 $v_i = v_j$。
输出格式
程序需向标准输出写入数据。输出仅一行,包含一个实数(保留一位小数),表示 $\text{error}(F)$ 的最小值。
样例
样例输入 1
5 0 0 2 1 3 5 6 7 7 11
样例输出 1
1.0
样例输入 2
10 5 9 8 9 0 0 23 18 26 18 2 0 3 0 13 9 18 9 21 18
样例输出 2
0.0