「1 番じゃなきゃダメですか?K 番じゃダメなんでしょうか?」
これがケイ氏の座右の銘である.最近ケイ氏はもっぱら多角形に興味があるようで,目の前に広がる広大な二次元平面上に置かれた N 個の点を見て,そこから多角形を形成する方法について思いを馳せている.ケイ氏はどうやら,この N 個の点のうちいくつかの点を選んで自由な順番で繋げることで,選んだ点を頂点とする多角形を構成することにしたようだ.ただし,多角形は以下の条件を満たす必要がある.
ケイ氏は己の信念に従って,このような多角形のうち,周長,すなわち全ての辺の長さの和が K 番目に短い多角形を渇望している.
あなたの仕事は,ケイ氏を手伝うため,条件を満たす多角形のうち,周長の昇順に並べたときに K 番目となる多角形を求め,その周長を出力するプログラムを書くことだ.ただし,そのような多角形が K 個以上存在しないこともある.そのようなときにはケイ氏の無念の気持ちを慮りつつ,申し訳ない気持ちを込めながら -1 と出力する必要がある.
入力は複数のデータセットからなる. 各データセットは次の形式で表される.
N K
x1 y1
...
xN yN
データセットの1行目には二次元平面上の点の数 N と求める周長の順位 K が与えられる. N, K はともに整数であり,3 ≤ N ≤ 25, 1 ≤ K ≤ 10 が成り立つ.続く N 行では各点の二次元平面上の座標が与えられる.N 行のうち i 行目には i 番目の点の x 座標 xi と y 座標 yi がともに整数で与えられ,すべての 1 ≤ i ≤ N について -100 ≤ xi, yi ≤ 100 が成り立つ.どの相異なる 3 点を選んでも,その 3 点すべてを通るような直線は存在しないと仮定してよい.また,入力において,周長の昇順に並べたときに K 番目となる,問題文中に述べた条件を満たす多角形は,存在するならば一意に定まると仮定してよい.
入力の終わりは,2 個のゼロだけからなる行で表される. 全データセットの総数は 50 を超えない.
与えられた点集合からいくつかの点を選び単純多角形を作るとき,構成可能な単純多角形のうち K 番目に周長が短い多角形の周長を 1 行に出力せよ.そのような多角形が存在しない場合は -1 を出力せよ.結果は 10-4 以上の誤差を含んではいけない.
5 2 1 1 1 4 2 2 3 1 3 5 3 1 0 2 1 0 -1 0 3 2 0 2 1 0 -1 0 9 10 8 1 9 19 2 10 1 1 4 17 7 13 3 4 6 13 9 21 0 0
11.812559200041266 6.472135954999580 -1 52.202878812480016