イヅア大学は今年もプログラミングコンテストを開催する。問題作成チームの一員であるあなたは、座標平面上に十分に散らばった複数の点を配置した入力データを生成する必要がある。ところが、実際に生成してみると、点の集まりが十分に散らばらないことがあった。あなたは、生成した点の集まりが十分に散らばるように入力データを修正することにした。
点の集まりの中で最も距離が近い二点間の距離を、その点の集まりの散らばり方の尺度とする。あなたは、点の集まりからいくつかの点を削除することで、この尺度を最大にしたい。
座標平面上の各点の座標と削除する点の数Kが与えられたとき、点をK個削除したときの散らばり方の尺度の最大値の二乗を出力するプログラムを作成せよ。
入力は以下の形式で与えられる。
N K x1 y1 x2 y2 : xN yN
1行目に座標平面上の点の数N (3≤N≤1,000)と整数K (0≤K≤N−2 かつ K≤30)が与えられる。続くN行に、点の座標xi,yi (0≤xi,yi≤10,000)が整数で与えられる。ただし、同じ座標をもつ点は与えられない(i≠jについて、xi≠xjまたはyi≠yj)。
散らばり方の尺度の最大値の二乗を整数で1行に出力する。
5 2 0 0 2 2 4 1 4 2 7 0
13