物語
「2016?Al..right」と、おもちゃの売り手ヒルベルトはつぶやいた。彼は目を開け、サラダドレッシングを耳から少しずつ拭き取り、朝のキックスタートクリームニットを食べました。例の休日。しかし、彼は今すぐ仕事に行き、その年の会計を終える必要があります。
クリスマスは、特に彼の販売にとって、一年で非常に収穫の多い時期です。ヒルベルトは、それがどのように機能するかを正確に知っています。人が店に来て、提供された最初の贈り物を買います。彼らはそれを支払い、別の店に逃げます。実際には、ギフトが実際に何であるかは、実際には違いを生みません。高すぎない限り、価格も無関係です。それはすべて、クリスマスまでの残り時間に依存します。時間が短ければ短いほど、顧客の後悔は大きくなり、顧客が喜んで支払う価格が大きくなります。
ヒルベルトに必要なのは時計を見ることだけで、顧客はどれだけのお金を使うことができるかすぐにわかります。彼はこの事実を簡単に活用できます。彼は、特定の顧客に販売できる最も高価なギフトを見つけて、それを顧客に提供するだけです。彼は昨年、このcな戦略を採用するのを忘れたことに気付いたのです。しかし、それは変わるでしょう!
それにもかかわらず、ヒルベルトは、実際に彼の壮大な計画を使用していた場合、彼のビジネスがどれほど繁栄していたかを知りたいと思っています。彼は彼の店に来た人々のリストをまとめることができましたが、彼が彼らにどれだけのお金を稼ぐことができたかはわかりません。
あなたのタスク(TL; DR)
入力は、利用可能なギフトの価格の昇順リスト、および顧客の予算のリストで構成されます。予算のリストは、顧客がショップに到着したときと同じ順序で、すべての顧客が少なくとも前の予算と同額を支払うという条件で、昇順でもあります。
顧客ごとに、彼らが支払いたいと思う最も高価な贈り物を見つけ、その価格を出力します。予算内でギフトが利用できない場合は、を出力し0ます。
-40%アルゴリズムの漸近的な時間の複雑さがO(n+m)(些細ではなくO(n*m))である場合、文字ボーナスが得られます。入力リストの長さはどこにn, mありますか。
これはcode-golfで、最短バイトが勝ちます。標準的な抜け穴は禁止されています。
例
入力:
1 2 2 2 5 7 10 20
1 1 2 3 6 6 15 21 21 22
出力:
1 0 2 2 5 2 10 20 7 0
このタスクは地元のプログラミング競技会から取られ、私が英語に翻訳しました。元の割り当ては次のとおりです。https://www.ksp.sk/ulohy/zadania/1131/