問題の意味:
あるN Kraal、nは選択された線分のm個の点上の点に対応して、Mに牛から選択される、
そのような隣接する極大点間の最小距離値その
思考:ピギー+バイナリ
二部列挙ウシ二つの隣接間隔が、より大きいまたはこれに等しいピッチを牛にすべてのかどうかが決定されます。
書式#include <iostreamの> の#include <アルゴリズム> 書式#include <cstdioを> に#define最大100005 使用して 名前空間はstdを、 int型N、C、[最大]。 ブール裁判官(int型D){ int型のインデックス= 0、NUM = 1 。 以下のために(int型 i = 1 ; iは<N; iは++ ){ 場合([I] -a [インデックス]> = D){ インデックス = I。 NUM ++ ; } であれば(NUM> = C)リターン 真。 } を返す 偽。 } int型のmain(){ 一方(のscanf(" %d個の%のD "、&N、&C)=!EOF){ ため(int型 i = 0 ; iがn <; iは++ ){ scanf関数(" %のD "、および[I ]); } ソート( + N)。 int型のL、R、ANS。 L = 1。R = A [N- 1 ] -a [ 0 ]。ANS = 0 ; 一方、(L <= R){ INT半ば=(L + R)>> 1 。 もし(裁判官(MID)){ ANS = ミッド。 L =ミッド+ 1 。 } 他{ R =ミッド- 1 。 } } COUT << ANS << ENDL。 } 戻り 0 。 }