F - Engines

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 600

問題文

E869120 君は最初、2 次元平面上の原点 (0, 0) に立っています。

彼は N 個のエンジンを持っています。エンジンの使い方と機能は以下のようになります。

  • i 個目のエンジンを使うと、E869120 君のいる場所の X 座標が x_i、Y 座標が y_i 変化する。つまり、E869120 君が座標 (X, Y) にいるときに i 個目のエンジンを使うと、座標 (X + x_i, Y + y_i) に移動する。
  • エンジンはどのような順番で使ってもよいが、各エンジンは 1 回までしか使えない。ただし、使わないエンジンがあってもよい。

彼は、原点から最も遠い場所に行きたいです。
最後に到達する地点の座標を (X, Y) として、原点からの距離 \sqrt{X^2 + Y^2} の最大値を求めてください。

制約

  • 1 \leq N \leq 100
  • -1 \ 000 \ 000 \leq x_i \leq 1 \ 000 \ 000
  • -1 \ 000 \ 000 \leq y_i \leq 1 \ 000 \ 000
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられる。

N
x_1 y_1
x_2 y_2
 : :
x_N y_N

出力

最後に到達する地点の、原点からの距離の最大値を実数値として出力せよ。
ただし、実際の答えとの相対誤差または絶対誤差が 10^{-10} 以内であれば正解とみなす。


入力例 1

3
0 10
5 -5
-5 -5

出力例 1

10.000000000000000000000000000000000000000000000000

うまくエンジンを使うと、最後に到達する地点の、原点からの距離を 10 にすることができます。
これには次の 3 通りの方法があります。

  • エンジン 1 を使って (0, 10) に移動する
  • エンジン 2 を使って (5, -5) に移動し、その後エンジン 3 を使って (0, -10) に移動する
  • エンジン 3 を使って (-5, -5) に移動し、その後エンジン 2 を使って (0, -10) に移動する

距離を 10 より大きくする方法はないので、最大値は 10 となります。


入力例 2

5
1 1
1 0
0 1
-1 0
0 -1

出力例 2

2.828427124746190097603377448419396157139343750753

最後に到達する地点の、原点からの距離の最大値は 2 \sqrt{2} = 2.82842... となります。
これを達成する方法として、次のようなものが挙げられます。

  • エンジン 1 を使って (1, 1) に移動し、その後エンジン 2 を使って (2, 1) に移動し、最後にエンジン 3 を使って (2, 2) に移動する

入力例 3

5
1 1
2 2
3 3
4 4
5 5

出力例 3

21.213203435596425732025330863145471178545078130654

エンジン 1 \rightarrow 2 \rightarrow 3 \rightarrow 4 \rightarrow 5 の順で全部使うと、最終的に (15, 15) にたどり着き、原点からの距離は 15 \sqrt{2} = 21.2132... となります。


入力例 4

3
0 0
0 1
1 0

出力例 4

1.414213562373095048801688724209698078569671875376

(x_i, y_i) = (0, 0) である、何の意味も持たないエンジンがある可能性もあります。


入力例 5

1
90447 91000

出力例 5

128303.000000000000000000000000000000000000000000000000

1 個しかエンジンがない場合もあることにご注意ください。


入力例 6

2
96000 -72000
-72000 54000

出力例 6

120000.000000000000000000000000000000000000000000000000

2 個しかエンジンがない場合もあります。


入力例 7

10
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20

出力例 7

148.660687473185055226120082139313966514489855137208

Score: 600 points

Problem Statement

E869120 is initially standing at the origin (0, 0) in a two-dimensional plane.

He has N engines, which can be used as follows:

  • When E869120 uses the i-th engine, his X- and Y-coordinate change by x_i and y_i, respectively. In other words, if E869120 uses the i-th engine from coordinates (X, Y), he will move to the coordinates (X + x_i, Y + y_i).
  • E869120 can use these engines in any order, but each engine can be used at most once. He may also choose not to use some of the engines.

He wants to go as far as possible from the origin. Let (X, Y) be his final coordinates. Find the maximum possible value of \sqrt{X^2 + Y^2}, the distance from the origin.

Constraints

  • 1 \leq N \leq 100
  • -1 \ 000 \ 000 \leq x_i \leq 1 \ 000 \ 000
  • -1 \ 000 \ 000 \leq y_i \leq 1 \ 000 \ 000
  • All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
x_1 y_1
x_2 y_2
 : :
x_N y_N

Output

Print the maximum possible final distance from the origin, as a real value. Your output is considered correct when the relative or absolute error from the true answer is at most 10^{-10}.


Sample Input 1

3
0 10
5 -5
-5 -5

Sample Output 1

10.000000000000000000000000000000000000000000000000

The final distance from the origin can be 10 if we use the engines in one of the following three ways:

  • Use Engine 1 to move to (0, 10).
  • Use Engine 2 to move to (5, -5), and then use Engine 3 to move to (0, -10).
  • Use Engine 3 to move to (-5, -5), and then use Engine 2 to move to (0, -10).

The distance cannot be greater than 10, so the maximum possible distance is 10.


Sample Input 2

5
1 1
1 0
0 1
-1 0
0 -1

Sample Output 2

2.828427124746190097603377448419396157139343750753

The maximum possible final distance is 2 \sqrt{2} = 2.82842.... One of the ways to achieve it is:

  • Use Engine 1 to move to (1, 1), and then use Engine 2 to move to (2, 1), and finally use Engine 3 to move to (2, 2).

Sample Input 3

5
1 1
2 2
3 3
4 4
5 5

Sample Output 3

21.213203435596425732025330863145471178545078130654

If we use all the engines in the order 1 \rightarrow 2 \rightarrow 3 \rightarrow 4 \rightarrow 5, we will end up at (15, 15), with the distance 15 \sqrt{2} = 21.2132... from the origin.


Sample Input 4

3
0 0
0 1
1 0

Sample Output 4

1.414213562373095048801688724209698078569671875376

There can be useless engines with (x_i, y_i) = (0, 0).


Sample Input 5

1
90447 91000

Sample Output 5

128303.000000000000000000000000000000000000000000000000

Note that there can be only one engine.


Sample Input 6

2
96000 -72000
-72000 54000

Sample Output 6

120000.000000000000000000000000000000000000000000000000

There can be only two engines, too.


Sample Input 7

10
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20

Sample Output 7

148.660687473185055226120082139313966514489855137208