#dwango2016finalb. [dwango2016final_b]道迷い

[dwango2016final_b]道迷い

问题文

dwango公司新建了一个办公室。今天是在那个办公室进行工作的第一天。

员工NiwanGo早上准备去办公室,但当他到达最近的地铁站时,发现了一件糟糕的事情。什么呢?他居然不知道办公室在哪里。

dwango公司的新办公室位于一条道路上,并且最近的地铁站坐标为0。这条道路上有N个交叉口,NiwanGo知道办公室可能位于这N个交叉口中的任意一个。办公室可能位于负坐标上。注意,地铁站坐标0没有交叉口。

只好这样,NiwanGo决定沿着这条道路走来寻找办公室。当他到达某个交叉口时,他才知道那里是否有办公室。

现在,NiwanGo的上司知道NiwanGo到达地铁站的时间。由于dwango公司的员工在单位时间内以单位距离的速度前进,所以假设从地铁站到办公室的距离是x,并且将NiwanGo到达地铁站的时间设为0,那么如果NiwanGo到办公室的时间晚于时间x,他就会生气。早于时间x不会有问题。

因此,NiwanGo考虑通过以恒定的速度奔跑来确保不管办公室位于哪个交叉口,地铁站和办公室之间的距离都是x,并且在时间x之前到达办公室。由于NiwanGo想要尽量慢地奔跑,所以他决定选择适当的路径并使奔跑的速度最小。

请计算NiwanGo可能的最小奔跑速度。


输入

输入数据从标准输入中提供,具有以下格式:

N x_1 . . . x_N

  • 第1行包含一个整数N(1 ≤ N ≤ 1000)。
  • 接下来的N行,每行给出一个整数x_i(-10^9 ≤ x_i ≤ 10^9,x_i ≠ 0),表示第i个交叉口的位置。对于任意的i(1 ≤ i ≤ N-1),满足x_i < x_{i+1}。

部分得分

本问题设有部分得分。

  • 对满足N ≤ 200的数据集给出正确答案,可获得部分得分70分。
  • 对所有数据集给出正确答案,可额外获得50分,总共最多可获得120分。

输出

请以一行输出NiwanGo奔跑的最小速度。输出可以包含小数点后任意位数的数字,但当与真值的绝对误差或相对误差不超过10910^{-9}时,将视为正确答案。

注意最后要有换行符。


输入示例1

4
-3
-1
1
2

输出示例1

3.00000000000000

以下是NiwanGo的移动示例:

  • 以速度3移动到第2个交叉口,并判断是否为办公室。
  • 如果不是办公室,则以速度3移动到第3个交叉口,并判断是否为办公室。
  • 如果不是办公室,则以速度3移动到第4个交叉口,并判断是否为办公室。
  • 如果不是办公室,则以速度3移动到第1个交叉口,并判断是否为办公室。

通过这种行为方式,NiwanGo可以在连续的交叉口1、2、3、4分别用3、1/3、1、4/3单位时间内移动,满足问题描述中的条件。


输入示例2

5
-5
-2
2
4
7

输出示例2

4.14285714285714

输入示例3

9
-18
-13
-11
-6
-2
1
6
16
17

输出示例3

4.37500000000000