006 - 番犬派遣会社
時間制限 8 秒 / メモリ制限 64 MB / 得点 20 / x 0 /
問題
あなたは北九州で客先の要望に応じて番犬を派遣する会社を経営している. あなたの会社の特徴は,現場に番犬の効果を高めるフェンスを設置するところである.
犬は長いロープの先端に繋がれていて,ロープの他端は杭で固定されている.犬が到達できる境界のところにフェンスを設置して,フェンスに近づくよそ者がいたら犬が対応するようにする.
周辺には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/Output
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