10
24
2015
0

[Codeforces Round #320] Weakness and Poorness


E. Weakness and Poorness
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given a sequence of n integers a1, a2, ..., an.

Determine a real number x such that the weakness of the sequence a1 - x, a2 - x, ..., an - x is as small as possible.

The weakness of a sequence is defined as the maximum value of the poorness over all segments (contiguous subsequences) of a sequence.

The poorness of a segment is defined as the absolute value of sum of the elements of segment.

Input

The first line contains one integer n (1 ≤ n ≤ 200 000), the length of a sequence.

The second line contains n integers a1, a2, ..., an (|ai| ≤ 10 000).

Output

Output a real number denoting the minimum possible weakness of a1 - x, a2 - x, ..., an - x. Your answer will be considered correct if its relative or absolute error doesn't exceed 10 - 6.

Sample test(s)
input
3
1 2 3
output
1.000000000000000
input
4
1 2 3 4
output
2.000000000000000
input
10
1 10 2 9 3 8 4 7 5 6
output
4.500000000000000
Note

For the first case, the optimal value of x is 2 so the sequence becomes  - 101 and the max poorness occurs at the segment "-1" or segment "1". The poorness value (answer) equals to 1 in this case.

For the second sample the optimal value of x is 2.5 so the sequence becomes  - 1.5,  - 0.5, 0.5, 1.5 and the max poorness occurs on segment "-1.5 -0.5" or "0.5 1.5". The poorness value (answer) equals to 2 in this case.

题目大意:对于一个序列,定义它的poorness为所有元素的和的绝对值,weakness为它所有子段的poorness的最大值。现给出一个序列a,求使序列$a_1-x,a_2-x,...,a_n-x$的poorness最小的x。


令$s\left(i,j\right)=\sum_{k=i}^j\left(a_k-x\right)$。

$weakness\left(a\right)$
$=\max_{1\leq i\leq j\leq n}\left|s\left(i,j\right)\right|$
$=\max_{1\leq i\leq j\leq n}\max\left(+s\left(i,j\right),-s\left(i,j\right)\right)$
$=\max\left(\max_{1\leq i\leq j\leq n}+s\left(i,j\right),\max_{1\leq i\leq j\leq n}-s\left(i,j\right)\right)$

显然max的前半部分是单调递减的,而后半部分是单调递增的,用二分或三分找到他们相等时x的值就是最优解。

代码在此。

Category: 题解 | Tags: 二分 数学 Codeforces | Read Count: 391

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com