Історія
"2016 рік? Все добре", - бурчав продавець іграшок Гільберт. Він розплющив очі, витер соломку з вуха, витріщивши з вуха і з’їв ранковий ударний крем. Зразкові свята. Йому зараз потрібно ходити на роботу і закінчити бухгалтерію.
Різдво - це дуже урожайний період року, особливо для його продажу. Гільберт точно знає, як це працює: людина заходить у магазин і купує перший подарунок, який їм пропонують. Вони платять за це і біжать в інший магазин. На практиці те, що насправді подарунок, насправді не має значення. Ціна також не має значення, за умови, що вона не надто висока. Все залежить від часу, що залишився до Різдва - чим коротший час, тим більші розкаяння клієнтів, тим більша ціна, яку вони готові платити.
Все, що потрібно Гільберту, - це подивитися на годинник - і він одразу знає, скільки можуть витратити його клієнти. Він може легко скористатися цим фактом: він просто знаходить найдорожчий подарунок, який він може продати даному клієнтові, і запропонувати їм їх. Лише тепер він зрозумів, що забув застосувати цю хитру стратегію минулого року. Це все зміниться!
Тим не менше, Гільберт хотів би знати, наскільки б його бізнес процвітав, якби він насправді використовував свою грандіозну схему. Йому вдалося скласти список людей, які прийшли до його магазину, проте він не впевнений, скільки грошей він міг заробити на них.
Ваше завдання (TL; DR)
Вхід складається з висхідного переліку цін на доступні подарунки та списку бюджетів клієнтів. Перелік бюджетів відбувається в тому ж порядку, що і клієнти прибули до магазину - за умови, що кожен клієнт готовий платити принаймні стільки, скільки попередній, тобто він також збільшується.
Для кожного замовника знайдіть найдорожчий подарунок, який вони готові заплатити, і виведіть його за ціною. Якщо подарунків у межах бюджету немає, виведіть a 0.
Ви отримуєте -40%бонус символів, якщо асимптотична складність вашого алгоритму є O(n+m)(а не тривіальною O(n*m)) Де n, mдовжини списків введення.
Це кодовий гольф , виграє найкоротші байти. Стандартні лазівки заборонені.
Приклад
Вхід:
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/