It is sometimes tricky to figure out the cheapest way to buy things, even in the supermarket where the price of all goods are listed clearly. Just consider what I saw last Saturday about the price of cooking oil: (notice the difference in the sizes of the two price tags)
Having a sharp mind (a consequence of regularly taking part in online programming contests), you should have no problem in seeing that the 'buy-1-get-1-free' scheme is preferable. But what about your Mum? It is your responsibility as her son/daughter to write her a program that computes the lowest price to buy things in the supermarket, thus helps her to save money.
Input Specification
The input consists of more than a hundred test cases, each concerning a different item. The first line of each case gives the unit price of buying an item, then a non-negative integer (). This is followed by lines each containing two numbers and (), which means that you can buy such items for $. Finally, there is a line containing a list of positive integers ().
Note that all prices given in the input are floating-point numbers in exactly decimal places, with .
Output Specification
For each of them, your program should print the lowest price you need to get items. Note that you do not have to buy exactly items; you may consider buying more than items, and giving the unneeded items to your dear neighbours, if you can save money in this way.
Sample Input
22.00 2
2 22.00
4 60.00
2 4
25.00 2
2 48.00
2 46.00
2
22.00 2
2 22.00
4 40.00
1 2 3
Sample Output
Case 1:
Buy 2 for $22.00
Buy 4 for $44.00
Case 2:
Buy 2 for $46.00
Case 3:
Buy 1 for $22.00
Buy 2 for $22.00
Buy 3 for $40.00
(Note that this problem is sourced from UVa.)
Comments