5.1演習---大理石アルゴリズム(UVa10474)

:タイトル

N既存の大理石、大理石非負の整数上に書かれた各小の最初の数の各大量注文の場合、Qの質問に答えます。
各質問は、xの大理石を言ういくつかの整数x、そうであれば、上にも答えを言うの大理石があるかどうかを尋ねます。
ソートされた大理石は、左から右に番号が付けられています。1
N. (サンプルでは、スペースを節約するために、1つの行大理石に結合されたすべての数は、すべての問題は、ラインに組み込むこと。)

(A)サンプル入力

4  1 
2  3  5  1 
5 
5  2 
1  3  3  3  1 
2  3

(B)サンプル出力

ケース#1 5で見つかった4 
ケース#2 2 が見つかりません
 3で見出さ3 

2:コードの実装

#define _CRT_SECURE_NO_WARNINGS 
する#include <iostreamの> 
の#include <アルゴリズム>
使用して 名前空間はstdを、

#define MAX_LEN千
 INT [MAX_LEN]。

INT メイン()
{ 
    FILE * FP = freopenは(" data5_1.in "" R " 、STDIN)。
    freopenは(" data5_1.out "" W " 、STDOUT)。
    int型私= 0 、NUM、C、ヴァル、POS; 

    しばらく(!feofを(FP))
    { 
        //入力メッセージ 
        COUT << " のCASE#" << <<私は++ " " << てendl;
         // 初期情報取得 
        CIN NUM >> Cを、
         のためのint型 J = 0 ; J <NUM; J ++ 
            CIN >> A [J];
         // ソート
        ソート(+のNUM) ; // 左と右のオープンソースに近い外観は、以下のデフォルトの昇順ソートされ
         // 取得クエリ情報
        のためのINT J = 0 J <C。 ; J ++ 
        { 
            CIN >> ヴァル。
            ポスト= LOWER_BOUND(A + NUM、ヴァル) - 。
            もし([POS] ==ヴァル)
                COUT <<ヴァル<< " で見つける" << POS + 1 << ENDL。
            他の
                coutの <<ヴァル<< " 見つからない" <<てendl; 
        } 
    } 

    freopenは(" CON " " R " 、STDIN)。
    freopenは(" CON " " W " STDOUT); リターン 0; 
}

(A)ソート方法

配列のデフォルトサイズを使用してソート比較演算子はソートされています。必要に応じてその照合をカスタマイズすることができます。
ソート(A、A + N-)配列[n]はデフォルトの順序とすることができます
ソートはテンプレート関数であるため、ソートする配列をソートできる以上である、彼は、任意のオブジェクトを並べ替えることができます

(ii)の方法LOWER_BOUND

最初の位置以上のxを求めるLOWER_BOUND

 

おすすめ

転載: www.cnblogs.com/ssyfj/p/11512131.html