/ *
まだわずか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] .num] = 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] .num;
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]は.num)
[J] = 0;
}
}
}
//初始化钥匙位置
するため(INT J = 1; J <= nであり、j ++)
{
COUT << [J] <<」「。
}
0を返します。
}