В Канаде копейки больше не распространяются. Наличные платежи округляются до ближайших 5 центов.
Деньги можно сэкономить, разделив покупки. Например, два предмета по 1,02 долл. США стоят 2,04 долл., Что округляет до 2,05 долл., Но при покупке предметов по отдельности каждая цена округляется до 1,00 долл., Что в сумме составляет 2,00 долл. США. Однако при покупке двух предметов по 1,03 долл. Каждый лучше покупать их за одну покупку.
Еще один способ сэкономить деньги - использовать кредитную карту, когда округление является неблагоприятным, поскольку платежи по кредитам не округляются. Если мы хотим получить два товара по 1,04 доллара, общая цена будет округлена до 2,10 доллара независимо от того, как мы разделили покупки. Поэтому мы должны оплатить эти товары с помощью кредитной карты.
Напишите функцию или программу, которая принимает список цен товаров в виде целых чисел в центах и выводит наименьшую возможную общую цену (в центах) для тех товаров, которая может быть достигнута с помощью последовательности покупок, каждая из которых является либо наличными, либо кредитом.
Самый короткий код выигрывает.
Контрольные примеры
[] : 0
[48] : 48
[92, 20] : 110
[47, 56, 45] : 145
[55, 6, 98, 69] : 225
[6, 39, 85, 84, 7] : 218
[95, 14, 28, 49, 41, 39] : 263
[92, 6, 28, 30, 39, 93, 53] : 335
[83, 33, 62, 12, 34, 29, 18, 12] : 273
[23, 46, 54, 69, 64, 73, 58, 92, 26] : 495
[19, 56, 84, 23, 20, 53, 96, 92, 91, 58] : 583
[3, 3, 19, 56, 3, 84, 3, 23, 20, 53, 96, 92, 91, 58, 3, 3] : 598
[2, 3, 4, 4, 4, 4, 4] : 19
s.reduce(:+)
(обычно вам даже не нужны паратезы, но в вашем случае ...) и встроитьm
дополнительные 2 символа.