タイトル説明
満足の仕事を見つけるために、牛肉は困難と各ジョブの報酬を収集します。標準的な牡牛座は牡牛座は、最も高い賃金の仕事を選択し、自分の能力の値を超えていない困難な場合には仕事に選択しました。自分の仕事は、牛肉を選択した後、牛肉牛肉はほとんどの友人は選挙が、牛肉はまだ助け小さなパートナーに、独自の基準を使用したヘルプの仕事に来ました。牡牛座は、あまりにも多くの小さなパートナーの、ので、彼はあなたにこのタスクを入れていました。
説明を入力します。
各入力は、テストを含みます。
各テストケースの最初の行は、それぞれ2つの正の整数、作業N(N <= 100000)と小さなパートナーM(M <= 100000)の数を含んでいます。
次のNラインは、作業の難易ジ(ディ<= 1000000000)と補償パイ(PI <= 1000000000)を、それぞれ、2つの正の整数を含みます。
次の行は、Mを正の整数、M小さなパートナー愛(AI <= 1000000000)の値を表現する能力を含んでいます。
保証同じ報酬の2つのタスクがありません。
出力説明:
各小パートナーのために、別々のライン出力に正の整数は、彼が得ることができる最高の報酬を表します。ジョブは、複数の人を選択することができます。
例1
輸出
コピー100 1000 1001
ACコード:
1つの#include <ビット/ STDC ++ H.> 2 使用して 名前空間STD; 3 。4 の#define N 100001 + 10 。5 6。 構造体ジョブ 7。 { 8。 int型の難易; // 困難 9。 INT給与; // リターン 10 } JB [N]。 11 構造体人 12であり 、{ 13である INT能力; // 容量 14 のint I; //は番号 15 INTを給与= 0。// リターン 16 } PESN [N]; 17 18は、 BOOL CMP(ジョブJB1、JB2ジョブ)// 昇順に困難に応じて 19。 { 20 リターン jb1.difficulty < jb2.difficulty; 21である } 22れる BOOL CMP1(PS1人、 PS2人)// 大容量の小さい 23である { 24 リターン ps1.ability < ; ps2.ability 25 } 26が BOOL CMP2(人物PS1、PS2人)// 昇順に番号 27 { 28 リターン ps1.i < ps2.i; 29 } 30 のint main()の 31 { 32 INT N、M。 33 一方(scanf関数(" %D%D "、&N、&M)=!EOF) 34 { 35 のために(INT iは= 0、I <N; I ++ ) 36 CIN >> JB [I] .difficulty >> JB [ i]は.salary。 37 ソート(JB、JB + N、CMP)。 38 のために(INT iは= 0 ; I <M、I ++ ) 39 { 40 pesn [i]は.I = I。 41 CIN >> pesn [I] .ability。 42 } 43 ソート(pesn、pesn + M、CMP1)。 44 // maxmoney中存放到J的最大值 45 int型 J = 0 ; 46 INT maxmoney = 0 。 47 のために(INTは iは= 0 ; I <M、I ++ ) 48 { 49 ながら(J < N) 50 { 51 であれば(JB [J] .difficulty> pesn [I] .ability) 52 ブレーク。 53 maxmoney = MAX(maxmoney、JB [J] .salary)。 54 J ++ ; 55 } 56 pesn [I] .salary = maxmoney。 57 } 58 ソート(pesn、pesn + M、CMP2)。 59 のために(INTは iが= 0を I ++; I <M ) 60 COUT << pesn [I] .salary << ENDL。 61 } 62 リターン 0 。 63 }