История
«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/