説明
ファーマージョンはN(2 <= N <=10万)の屋台で、新しい長い納屋を築いてきました。ストールは、位置X1に直線に沿って位置しています...、XN(0 <= XI <=10億)。彼のC(2 <= C <= N)牛が、この納屋のレイアウトが好きで、一度ストールに入れ互いに向かって積極的になることはありません。お互いを傷つけるから牛を防止するために、FJは、それらのいずれか2つの間の最小距離はできるだけ大きくなるように、ストールに牛を割り当てます。最大の最小距離は何ですか?
ファーマージョンNN(2 <= N <=10万)区画を含む、長い囲いを構築し、これらのキュービクルは、X1に番号が付けられ...、XN(0 <= XI <= 1,000,000,000)をしかし、ジョンのCの区画にレイアウトし、牛のいくつかの頭を好きではない(2 <= C <= N)の牛は、彼らが起こるように戦います。牛を維持するためには、お互いを傷つけます。ジョンは、牛にできるだけ大きい任意の二つの牛の間の最小距離を独自の区画を割り当てることを決め、その後、最大最小距離は何であります
入力
* 1行目:二スペース区切りの整数:NおよびC *ライン2..N + 1:回線I + 1は、整数ストール位置、XIが含ま
最初のライン:スペースで区切られた二つの整数NおよびC
---第二列の最初の行+ 1 N:I + 1 XI線はの位置を示します
出力
* 1行目:ワン整数:最大最小距離
最初のライン:整数、最大の最小値
サンプル入力
5 3
1
2
8
4
9
1
2
8
4
9
サンプル出力
3頭の
この最小距離に牛は3、4、8であります
この最小距離に牛は3、4、8であります
1の#include <cstdioを> 2の#include <CStringの> 3の#include <アルゴリズム> 4 の#defineのEPS 1E-6 5 使用して 名前空間STDを、 6のtypedef 長い 長LL。 7 int型N、M。 8 [ARRちゃう100005を]。 9 10 ブールチェック(LLのNUM){ 11 LL ANS = 1、事前= 1 。 12 のためには、(int型、I = 2 iが++; iがn = < {) 13 もし(ARR [I] - ARR [事前]> NUM =)ANS ++、予め= I; 14 } 15 リターン ANS> = M; // このメソッドを分析する可能点とすることができる 16 } 17 18である ボイド計算(){ 19。 左LL = 。1、右= ARR [N-] - ARRの[ 1 ]; 20である LL ANS; // 結論格納するために使用される 21である 一方で(<=左{右) 22が LL MID =左+右>> 1 ; 23である IF(チェック(MIDは))= MID +左1、ANS = MID; 24 他右半ば= 1。; 25 } 26 のprintf(" %LLDする\ n " 、ANS)。 27 } 28 29 INT メイン(){ 30 のscanf(" %D%dの"、&N、&M)。 31 のために(int型 i = 1 ; iが<= N; iが++)のscanf(" %のLLD "、およびARR [I])。 32 ソート(ARR + 1、ARR + 1 + N)。 33 計算()。 34 リターン 0 。 35 }