No Canadá, o centavo não é mais distribuído. Os pagamentos em dinheiro são arredondados para os 5 centavos mais próximos.
O dinheiro pode ser economizado dividindo-se as compras. Por exemplo, dois itens de US $ 1,02 custam US $ 2,04, que arredondam para US $ 2,05, mas ao comprar os itens em compras separadas, cada preço é arredondado para US $ 1,00, totalizando US $ 2,00. No entanto, ao comprar dois itens por US $ 1,03 cada, é melhor comprá-los em uma única compra.
Outra maneira de economizar dinheiro é usar um cartão de crédito quando o arredondamento é desfavorável, porque os pagamentos não são arredondados. Se quisermos dois itens de US $ 1,04, o preço total será de US $ 2,10, independentemente de como dividimos as compras. Portanto, devemos pagar por esses itens com cartão de crédito.
Escreva uma função ou programa que aceite uma lista de preços de itens como números inteiros em centavos e produz o menor preço total possível (em centavos) para os itens que podem ser alcançados através de uma sequência de compras, cada uma em dinheiro ou por crédito.
O menor código vence.
Casos de teste
[] : 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(:+)
(normalmente você nem precisa de parênteses, mas no seu caso ...) e inlinem
por 2 caracteres adicionais.