AT_abc274_e [ABC274E] Booster

Description

[problemUrl]: https://atcoder.jp/contests/abc274/tasks/abc274_e $ 2 $ 次元平面上に $ N $ 個の街と $ M $ 個の宝箱があります。街 $ i $ は座標 $ (X_i,Y_i) $ に、宝箱 $ i $ は座標 $ (P_i,Q_i) $ にあります。 高橋君は原点を出発し、$ N $ 個の街全てを訪れたのち原点に戻る旅行をしようと考えています。 宝箱を訪れる必要はありませんが、宝箱の中にはそれぞれブースターが $ 1 $ つあり、ブースターを拾うごとに移動速度が $ 2 $ 倍になります。 高橋君の最初の移動速度が単位時間あたり $ 1 $ であるとき、旅行にかかる時間の最小値を求めてください。

Input Format

入力は以下の形式で標準入力から与えられる。 > $ N $ $ M $ $ X_1 $ $ Y_1 $ $ \vdots $ $ X_N $ $ Y_N $ $ P_1 $ $ Q_1 $ $ \vdots $ $ P_M $ $ Q_M $

Output Format

答えを出力せよ。なお、想定解答との絶対誤差または相対誤差が $ 10^{-6} $ 以下であれば正解として扱われる。

Explanation/Hint

### 制約 - $ 1\ \leq\ N\ \leq\ 12 $ - $ 0\ \leq\ M\ \leq\ 5 $ - $ -10^9\ \leq\ X_i,Y_i,P_i,Q_i\ \leq\ 10^9 $ - $ (0,0),(X_i,Y_i),(P_i,Q_i) $ は相異なる - 入力は全て整数 ### Sample Explanation 1 以下のように移動するのが最適解の一つです。 - 原点から宝箱 $ 1 $ までの距離 $ 1 $ を速さ $ 1 $ で移動する。時間が $ 1 $ かかる - 宝箱 $ 1 $ から街 $ 1 $ までの距離 $ 1 $ を速さ $ 2 $ で移動する。時間が $ 0.5 $ かかる - 街 $ 1 $ から街 $ 2 $までの距離 $ 1 $ を速さ $ 2 $ で移動する。時間が $ 0.5 $ かかる - 街 $ 2 $から原点までの距離 $ 1 $ を速さ $ 2 $ で移動する。時間が $ 0.5 $ かかる ### Sample Explanation 2 以下のように移動するのが最適解の一つです。 - 原点 から街 $ 1 $ までの距離 $ 1.41\ldots $ を速さ $ 1 $ で移動する。時間が $ 1.41\ldots $ かかる - 街 $ 1 $ から街 $ 2 $ までの距離 $ 1 $ を速さ $ 1 $ で移動する。時間が $ 1 $ かかる - 街 $ 2 $ から原点までの距離 $ 1 $ を速さ $ 1 $ で移動する。時間が $ 1 $ かかる ### Sample Explanation 3 以下のように移動するのが最適解の一つです。 - 原点から宝箱 $ 1 $ までの距離 $ 1 $ を速さ $ 1 $ で移動する。時間が $ 1 $ かかる - 宝箱 $ 1 $ から宝箱 $ 2 $ までの距離 $ 1.41\ldots $ を速さ $ 2 $ で移動する。時間が $ 0.707\ldots $ かかる - 宝箱 $ 2 $ から街 $ 1 $ までの距離 $ 5 $ を速さ $ 4 $ で移動する。時間が $ 1.25 $ かかる - 街 $ 1 $ から原点までの距離 $ 5.65\ldots $ を速さ $ 4 $ で移動する。時間が $ 1.41\ldots $ かかる