川の石蹴り(noiopenjudge、noip2015)

説明

牛毎年川で別の岩に1つの岩からのジャンプを含む石蹴りゲームの様々な特別バージョンを、保持します。長いストレート川のこのエキサイティングなアクティビティ、開始時とLの出発点から遠い(1≤L≤10億)岩の終わりです。開始と終了の間に、N(50,000≤0≤N)はロックあり、ロック及び各原点の距離は、ジ(0 <ディ<L)です。

レース中は、牛が出発点からなり、各ステップの最後に到達しようとするだけで、別の岩に1つの岩からジャンプすることができます。もちろん、悪い牛の強さは、自分の目標を達成する方法はありません。

ファーマージョンは毎年彼の牛を誇りに思っているし、ゲームを見ました。しかし、時間をかけて、ゆっくりと前方に岩の間に近接して、他の農家に臆病な牛を見て、彼は非常に疲れを感じました。彼は最短距離最長のジャンプ、そのので、最初からコースの最後には、いくつかの岩を削除することを計画しています。彼はロック番目開始点と終了点のM(0≤M≤N)高々に加えて、除去することができます。

決定されたこれらの岩を削除するには、ジョンを助けてください、できるだけ長い距離が最短のジャンプはいくらですか?

エントリー

最初の行は、隣接する二つの整数の間に単一のスペースで区切られた三つの整数L、N、Mを含有します。

次のN行は、それぞれ各岩の距離の始点を表す整数行。岩プレス、近くの出発点から所定の距離は、二つの岩が同じ位置に表示されていません。

輸出

整数は、最長最短の距離をジャンプします。

サンプル入力

25 5 2
2
11
14
17
21

サンプル出力

4

プロンプト

2つの最短ホップ距離との間に位置する岩2及び14を除去した後(17から21まで又は21から25まで)4です。

制限事項と規則

制限時間:1秒

スペースの制約:128メガバイト

#include <iostreamの> 
する#include <cstdioを> 
する#include <cmath> 
の#include <アルゴリズム> 
の#include <CStringの>
 使用して 名前空間STD。
const  int型 MAXN = 50000 + 10 INT DIS [MAXN]。
INT メイン()
{ 
//     freopenは( "stone.in"、 "R"、STDIN)。
//     freopenは( "stone.out"、 "W"、STDOUT)。
    INTのL、N、M。
    CIN >> L >> N >> M。
    以下のためにint型 i = 1 ; iが<= N。%のD "、&DIS [I]);
     int型の L = 1、R = L; 
    ソート(DIS + 1、DIS + N + 1 );
     一方、(L < R)
    { 
        int型 Iを、ミッド=(L + R + 1)>> 1、POS(0)、温度(0 );
         のため(i = 1 ; iが<I ++は= N 
        { 
            場合)L(DIS [I] +中間>を破る;
             もし(DIS [I] -pos <MID)TEMP ++ ;
             他の POS = DIS [I]; 
        }
        TEMP + = N-I + 1 もし(温度<= M)、L = ミッド。
        他に、R =半ば1 
    } 
    COUT << L << ENDL。
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/hfang/p/11239892.html