毎年、牛は慎重に川で岩に岩から飛び降り含ま石蹴りの独特なバージョンをフィーチャーしたイベントを開催します。興奮は、開始時のロックと終わりに、別の岩と長く、真っ直ぐな川で行わ Lの 離れ開始から単位(1≤ Lの ≤10億)。開始および終了岩の間の川に沿って、 N (0≤ N 50,000≤)以上の岩石は、一体距離でそれぞれ、現れる D iが 開始(0 <から D iが < L)。
ゲームをプレイするには、順番にそれぞれの牛が始まる岩から始まり、岩から岩へジャンプだけ、エンディング岩でフィニッシュに到達しようとします。もちろん、あまり機敏牛は川に代わり終わる、最終岩にそれを作ることはありません。
ファーマージョンは彼の牛の誇りに思っていると、毎年このイベントを監視します。時間が経つにつれてしかし、他の農家の臆病な牛を見ての彼のタイヤは、一緒にあまりにも密接に置かれた岩の間に短い距離間でぐったり。彼は、牛が最後に到達するためにジャンプする必要があります最短距離を増加させるためにいくつかの岩を削除することを計画しています。彼は開始と終了の岩を削除することはできません知っているが、彼は彼が最大削除するために十分なリソースを持っていることを算出し、 Mの 岩(0≤ M ≤ N)。
FJは、彼が最短距離を増やすことができます正確にどのくらい知りたい *前* 彼は岩の除去を開始します。ファーマージョンは牛が最適なセット削除した後にジャンプすることがある可能な限り最大の最短距離を判断するのに役立ち Mの 岩を。
エントリー
1行目:スリースペースで区切られた整数: L、 N、および M
行2 .. N +1:各行は、いくつかの岩が離れて出発岩からどのくらい離れているかを示す一つの整数が含まれています。どの2つの岩が同じ位置を共有しません。
輸出
行1:牛は、除去した後にジャンプしなければならない最短距離の最大値である単一の整数 Mの 岩
サンプル入力
5 2 25
2
14
11
21
17
サンプル出力
4
プロンプト
1つの#include <iostreamの> 2の#include <CStringの> 3。の#include <アルゴリズム> 4。 使用した 名前空間STD; 5のtypedef ロング ロングLL; 6 LLのL、N、M; 7 LL ARR [ 50005 ]; 8 9。 BOOLのチェック(LL MID){ /// 数投げるまでの最短距離と実際のスローとの比較の数半分 10 LL NUM = 0、SUM = 0 ; 。11 ため(INT I = 1。 ;私は= N + < 1 ; Iを++ ){ 12 ARR = + [I] SUM - ARR [I- 1 ]; 13である // IF(SUM <= MID)NUM ++; // この距離に除去するために 14 IF(SUM <MID)NUM ++を、 15 /// 例えば過酢酸など、このそれは、加算合計と一致している前に、石満たす他の人が彼の表情の後に延期 16を 他{ 。17 合計= 0 ; 18である } 19。 } 20がある // NUMを返す; <= Mが 21である リターン NUM> ; M 22です } 23は、 24 LLバイナリ(LL左、右LL){ 25 ; LL ANS /// 最短距離の除去である 26 一方(左<= 右){ 27 LLミッド=左+右>> 1 。 28 もし右=ミッド((MID)をチェックしてください)1。 /// 移除多了 29 他に左=ミッド+ 1、ANS = ミッド; 30 } 31の リターンANS。 32 } 33 34 INT メイン(){ 35の IOS :: sync_with_stdio(偽)。 36 CIN >> L >> N >> M。 37 LL MAXX = 0 。 38の ARR [ 0 ] =0 ; 39 用(INT I = 1。 ;私は= N <; Iは++)CIN >> ARRは、[I]は、 40 ARR [N + 1 ] = L; 41である ソート(ARR + 1、ARR + N + 1 + 1 ); 42である COUTバイナリ<<(1、ARR [Nの+ 1 ])<< ENDLは; // 先頭からの最短距離 43は、 戻り 0 ; 44です }