Watchdog Corporation

時間制限 : 8 sec, メモリ制限 : 65536 KB
英語版はこちら

番犬派遣会社

あなたは北九州で客先の要望に応じて番犬を派遣する会社を経営している. あなたの会社の特徴は,現場に番犬の効果を高めるフェンスを設置するところである.

犬は長いロープの先端に繋がれていて,ロープの他端は杭で固定されている.犬が到達できる境界のところにフェンスを設置して,フェンスに近づくよそ者がいたら犬が対応するようにする.

周辺には1つだけ,長方形の建物があってもよい.犬は建物には入れないが,ロープの長さが許す範囲で建物を回り込んで動くことはできる (図F-1).建物の壁面に沿った部分にはフェンスは不要である.

図F-1: フェンスの配置例 (フェンスの一部は省略)

ロープの長さと建物の位置と大きさを受け取り, フェンスの長さを計算するプログラムを作れ.

Input

入力は複数のデータセットからなり,1つのデータセットは次の形式の1行で表される5つの整数からなる.

len x1 y1 x2 y2

len はロープの長さを表し, x1, y1, x2, y2は建物の位置と大きさを表す. 座標(x,y)の点は, x1 < x <x2かつy1 < y < y2のとき建物の内側にある.つまり建物の外壁はX軸またはY軸に平行である. 杭は原点に置かれている.

0 < len ≤ 100, −100 ≤ x1 < x2 ≤ 100, −100 ≤ y1 < y2 ≤ 100 であるものとしてよい. さらに,杭は建物から離れていることを仮定してよい (つまり,杭は建物の内側になく,かつ壁に接してもいない).

入力の終わりは5つのゼロからなる行によって示される.

Output

各入力ごとに,フェンスの長さの合計を小数点つき数として出力せよ.出力には数値以外の文字があってはならない.出力には0.00001を超える誤差があってはならない.

Sample Input

3 3 0 6 5
5 3 0 6 5
6 3 0 6 5
7 3 0 6 5
9 3 0 6 5
10 3 0 6 5
12 3 0 6 5
100 3 0 6 5
4 -3 4 5 8
5 -3 4 5 8
6 -3 4 5 8
64 -30 40 50 50
7 -3 4 5 8
10 -3 4 5 8
11 -3 4 5 8
14 -3 4 5 8
35 -3 4 5 8
100 -3 4 5 8
10 5 9 12 12
13 5 9 12 12
15 5 9 12 12
18 5 9 12 12
19 5 9 12 12
20 5 9 12 12
21 5 9 12 12
100 5 9 12 12
100 -5 1 -3 5
100 0 1 100 2
100 -1 99 100 100
10 -1 1 1 2
84 1 -77 5 -42
27 -12 -7 3 -4
0 0 0 0 0

Output for the Sample Input

18.84955592
26.77945045
31.69103413
39.54501577
55.51851918
63.83954229
75.38181750
628.05343108
25.13274123
24.98091545
29.43519428
318.90944272
35.02723766
55.44758990
64.23914179
89.33649537
219.11188064
627.48648370
62.83185307
76.33420961
88.61222855
112.17417345
121.59895141
126.16196589
132.25443447
628.23333565
628.18890261
626.17695473
613.16456638
62.61625003
527.84509612
168.07337509

Source: ACM International Collegiate Programming Contest , Japan Domestic Contest, Tokyo, Japan, 2011-06-24
http://icpc2011.ait.kyushu-u.ac.jp/