TopcoderArchive
Archive
Algorithm problem

ThirdBuyDiscount

Problem statement, definition, constraints, and public examples.

Problem Statement

You want to buy a certain set of items. The shop offers you a discount percent discount on every third item you buy. Therefore, you want to purchase the items in an order that will minimize the total cost.

Given a int[] prices containing the prices of the desired items and an int discount, return the minimal amount of money you must have in order to buy all the items.

Definition

Class:
ThirdBuyDiscount
Method:
minCost
Parameters:
int[], int
Returns:
double
Method signature:
double minCost(int[] prices, int discount)
(be sure your method is public)

Notes

  • Your return value must have an absolute or relative error less than 1e-9.

Constraints

  • discount will be between 0 and 100, inclusive.
  • prices will contain between 0 and 50 elements, inclusive.
  • Each element of prices will be between 0 and 2147483647, inclusive.

Examples

  1. {50, 20, 30, 17, 100}
    10
    Returns: 207.0
    One of the possible optimal sequences is {20, 30, 100, 17, 50}. So, the total cost is 20 + 30 + 0.9 * 100 + 17 + 50 = 207.
  2. {1,2,3,4,5,6,7}
    100
    Returns: 15.0
    The discount is 100%, a fantastic bargain for the consumer. Make the item with price 6 the third item you buy, and the item with price 7 the sixth.
  3. {100,40,23,592,582,19435739,204857,0}
    0
    Returns: 1.9641933E7
    There is no discount, so the total cost is always equal to the sum of all the original prices.
  4. {999,111,888,1238,52009,419,0,0,43,0,11,4,2,348,10039586,1000000,203985157}
    37
    Returns: 1.355019587E8
  5. {100,304,50607,2024,6046,708}
    75
    Returns: 17299.25
  6. {1}
    50
    Returns: 1.0
  7. {}
    100
    Returns: 0.0
Back to all problems