CCF 20170902公開鍵ボックス(のみ40点、私はアドバイスああを求める、理由がわかりません!)

/ *
まだわずか40分! 
著者:L
日:2019年3月16日20です:40から00:15 
プロジェクト:ccf2017 /公開鍵ボックス09から2 
* /
書式#include <iostreamの>
名前空間STDを使用しました。

{Keyクラスの
    パブリック:
        int型NUM; //キー番号のニーズが 
        開始INT;回の//数は、キーはwが削除される 
        int型の温度; // wのキー番号は長く使用する必要があります
        int型の終了を; // wの鍵は、さらに時間を要します
}; 

メインINT()
{
    // N-キー、K教師は、キーを使用する必要が 
    INT N-、K、0 = min_end、max_end = 0、C [1001];
    CIN >> N-K;
    位置メモリキー// 
    INT [1001];
    キー番号kが//格納され、教師はさらに時間取る必要が    
    キーB [1001];
    (; I <K I ++ INT I = 0)のための
    {
        CIN >> B [I]。 >> B NUM [I] .start >> B [I] .TEMP;
        B [I] .END = B [I] .start + B [I] .TEMP;
    } 
    //キー位置を初期化する 
    (INT J =ため。1; J <= N; J ++)
    {
        [J] = J;
    }
    
    最も早い時点Bを促進する必要性を見つける// [min_end] .END
    (INT I = 1; I <K; I ++)
    {
        IF(B 【min_end] .END> B [I] .END)
            min_end = I; // 0
        IF(B [max_end] .END <B [I]。終わり)
            I = max_end ;. 1 //
    } 
        
    //以下[min_end] .END時間が空であるキー位置bを取るために必要なより。10305
    (; I <K; INT I = 0 I ++)用
    {
        IF(B [I] .start <B [min_end] .END)
            A [B [I] .nu​​m] = 0;    
    } 
        
    //はBに等しいです[ min_end] NUM .END時間に大きな袋に小さなを開始します。
    //すべての瞬間において、その後さらにへせ- 、右空席左から、小から大まで>さらにキー番号 
    のために(INT X = B [min_end] .END; X <= B [max_end] .END; X ++)
    { 
        int型のCC = 0;
        // Bを見つける[min_end] .ENDさらにNUMキー(鍵番号)を必要とする時間 
        のために(INT I = 0、I <K; I ++)
        {
            IF(B [I] == .END X) 
            { 
                C [CC] = B [I] .nu​​m;
                CC ++;
            }    
        } 
        
        // C []から大に小さく、また、cキー(バブルソート)の合計が必要
        のための(INT J = CC; Jが> 1; J)
        {    
            用(INT I = 0; I <J- 。1; I ++)
            {
                IF(C [I]> C [I + 1])スワップ(C [I]、C [J + 1]);    
            } 
        }

        (!CC = 0)の場合
        {
            //还钥匙
            int型D = 0;
            以下のために(INT I 1 =; I <= N; I ++) 
            {            
                IF([I] == 0)
                {
                    [I] = C [D]。
                    D ++;
                    (D == CC)ブレークであれば、    
                }
            }
        }

        //取钥匙
        ため(INT I = 0; iが<K; I ++)
        {
            IF(B [i]は.start == x)の    
                ための(INT J = 1; J <= nであり、j ++)
                {
                    IF([J ] == B [i]は.nu​​m)
                        [J] = 0;
                }
        } 
    }
    
    //初始化钥匙位置 
    するため(INT J = 1; J <= nであり、j ++)
    {
        COUT << [J] <<」「。
    }
    0を返します。
}

公開された29元の記事 ウォン称賛23 ビュー10000 +

おすすめ

転載: blog.csdn.net/sunshine04/article/details/88609706