Statistics

Problem Statement for "VolumeDiscount"

Problem Statement

When a customer buys large quantities of a product, frequently the seller will offer a volume discount. For instance, one unit might cost 10 dollars, but might be offered in packages of 5 for 45 dollars. In such a case, it always makes sense buy the bulk lots to save money. In some other cases, however, it might not always make sense. Suppose a single unit were on sale for 8 dollars. In such a case, purchasing single units would be less expensive than purchasing a 5-pack.

You are given a String[] priceList describing the number of units available in each bundle, and the cost of the bundle. Each element is of the form "units cost" (quotes added for clarity). You are also given an int quantity, the number of units you wish to purchase.

Return an int indicating the best possible cost to purchase at least the desired quantity of units.

Definition

Class:
VolumeDiscount
Method:
bestDeal
Parameters:
String[], int
Returns:
int
Method signature:
int bestDeal(String[] priceList, int quantity)
(be sure your method is public)

Constraints

  • priceList will contain between 1 and 5 elements, inclusive.
  • Each element of priceList will be formatted as described in the problem statement.
  • units will be an integer between 1 and 99, inclusive, with no leading zeroes
  • cost will be an integer between 1 and 999, inclusive, with no leading zeroes.
  • No two values of units will be the same.
  • quantity will be between 1 and 99, inclusive.

Examples

  1. {"1 10", "5 45"}

    10

    Returns: 90

    The first example suggested in the problem statement.

  2. {"1 8", "5 45"}

    10

    Returns: 80

    The second example suggested in the problem statement.

  3. {"99 913", "97 173", "50 464", "80 565"}

    18

    Returns: 173

    Here, every package has more units than we need, so we pick the cheapest one.

  4. {"99 577", "97 796", "50 449"}

    50

    Returns: 449

  5. {"99 577", "97 796", "50 449"}

    21

    Returns: 449

  6. {"64 302","3 363"}

    74

    Returns: 604

  7. {"33 895","13 838","94 565","83 761"}

    21

    Returns: 565

  8. {"56 470","71 775","17 372","5 895","67 527"}

    84

    Returns: 899

  9. {"32 235","2 798","3 855","30 760","94 892"}

    99

    Returns: 940

  10. {"46 317","99 906","26 151"}

    7

    Returns: 151

  11. {"72 290","31 805"}

    59

    Returns: 290

  12. {"2 272","1 166","10 993"}

    81

    Returns: 8110

  13. {"78 34"}

    66

    Returns: 34

  14. {"49 650","90 90","12 999","39 279","86 93"}

    40

    Returns: 90

  15. {"88 994","5 880","84 281","92 305"}

    67

    Returns: 281

  16. {"97 114","57 316","67 995","29 336"}

    36

    Returns: 114

  17. {"63 937","92 374","23 787","69 379","55 29"}

    54

    Returns: 29

  18. {"20 483","32 898"}

    34

    Returns: 966

  19. {"45 692"}

    59

    Returns: 1384

  20. {"88 30","94 841","17 293","5 111"}

    88

    Returns: 30

  21. {"74 531","29 903","85 276","15 274","12 620"}

    96

    Returns: 550

  22. {"53 147","30 2","84 194"}

    46

    Returns: 4

  23. {"30 565","33 568","69 477","58 77","59 765"}

    3

    Returns: 77

  24. {"88 335"}

    26

    Returns: 335

  25. {"52 869","53 620","57 775","94 232","42 392"}

    79

    Returns: 232

  26. {"2 272", "1 166", "10 993" }

    81

    Returns: 8110

  27. {"2 272", "1 166", "10 993" }

    85

    Returns: 8654

  28. {"10 1", "3 2", "1 100" }

    12

    Returns: 2

  29. {"3 15", "7 34" }

    11

    Returns: 60

  30. {"2 2", "3 3" }

    5

    Returns: 5

  31. {"16 511", "3 783", "9 127", "21 759", "18 590" }

    3

    Returns: 127

  32. {"5 100", "3 63", "6 126" }

    9

    Returns: 189

  33. {"1 5", "98 1" }

    99

    Returns: 2

  34. {"10 5", "6 4", "2 4" }

    12

    Returns: 8

  35. {"3 200", "1 100" }

    10

    Returns: 700

  36. {"2 5", "3 6", "4 7", "5 9" }

    7

    Returns: 13

  37. {"1 3", "10 9", "4 4" }

    12

    Returns: 12

  38. {"4 30", "20 100", "2 20" }

    89

    Returns: 480

  39. {"5 5", "8 9" }

    6

    Returns: 9

  40. {"15 37", "10 28" }

    17

    Returns: 56

  41. {"99 913", "97 173", "50 464", "80 565" }

    18

    Returns: 173

  42. {"10 500", "3 150" }

    13

    Returns: 650

  43. {"99 198", "60 60" }

    80

    Returns: 120

  44. {"3 10", "5 12" }

    6

    Returns: 20

  45. {"3 6", "4 9" }

    4

    Returns: 9

  46. {"3 100", "2 49" }

    3

    Returns: 98

  47. {"3 3", "4 4" }

    4

    Returns: 4

  48. {"2 272", "1 166", "10 993", "9 900" }

    81

    Returns: 8100

  49. {"10 200", "20 100" }

    10

    Returns: 100

  50. {"32 2", "97 7" }

    97

    Returns: 7

  51. {"1 5", "5 14", "3 9" }

    7

    Returns: 23

  52. {"50 500", "9 99" }

    63

    Returns: 693

  53. {"5 10", "4 8", "1 500" }

    97

    Returns: 194

  54. {"1 10", "5 45" }

    6

    Returns: 55

  55. {"5 10", "6 11" }

    14

    Returns: 30

  56. {"10 11", "9 7" }

    19

    Returns: 18

  57. {"1 8", "5 20" }

    8

    Returns: 40

  58. {"3 99", "2 80" }

    7

    Returns: 259

  59. {"2 272", "7 166", "5 993" }

    81

    Returns: 1992

  60. {"10 40", "50 100" }

    20

    Returns: 80

  61. {"12 300", "8 196", "5 123" }

    41

    Returns: 1007

  62. {"1 1", "5 1" }

    4

    Returns: 1

  63. {"6 51", "5 50" }

    10

    Returns: 100

  64. {"3 5" }

    8

    Returns: 15

  65. {"20 1", "1 100" }

    81

    Returns: 5

  66. {"3 3", "4 4" }

    10

    Returns: 10

  67. {"1 8", "90 1" }

    98

    Returns: 2

  68. {"10 86", "30 357", "89 890", "87 837", "1 11" }

    89

    Returns: 774

  69. {"98 100", "97 100" }

    99

    Returns: 200

  70. {"98 999" }

    99

    Returns: 1998

  71. {"49 490", "1 100", "2 21" }

    50

    Returns: 511

  72. {"1 999", "99 99" }

    2

    Returns: 99

  73. {"8 6", "9 10" }

    9

    Returns: 10

  74. {"5 4", "1 1" }

    6

    Returns: 5

  75. {"1 3" }

    99

    Returns: 297

  76. {"3 9", "4 8", "5 9" }

    7

    Returns: 16

  77. {"98 1" }

    99

    Returns: 2

  78. {"2 12", "3 20" }

    5

    Returns: 32

  79. {"13 130", "23 198" }

    62

    Returns: 588

  80. {"10 1", "2 1" }

    11

    Returns: 2

  81. {"50 100", "26 60" }

    52

    Returns: 120

  82. {"98 10", "99 15" }

    99

    Returns: 15

  83. {"4 4", "13 14" }

    13

    Returns: 14

  84. {"9 9", "6 6", "4 4" }

    10

    Returns: 10

  85. {"1 90", "10 800", "11 999" }

    11

    Returns: 890

  86. {"1 1", "2 2", "3 3", "4 4", "5 5" }

    99

    Returns: 99

  87. {"3 99", "5 165", "1 50", "2 80" }

    7

    Returns: 245

  88. {"20 30", "30 100", "21 800" }

    99

    Returns: 150

  89. {"2 272", "1 166", "10 993" }

    84

    Returns: 8488

  90. {"9 90", "8 88", "2 80", "1 79" }

    10

    Returns: 168

  91. {"10 10", "11 12" }

    11

    Returns: 12

  92. {"4 30", "20 100", "2 30" }

    89

    Returns: 490

  93. {"1 7", "3 16", "4 20" }

    14

    Returns: 72

  94. {"29 30", "30 30" }

    60

    Returns: 60

  95. {"3 10", "5 14" }

    9

    Returns: 28

  96. {"98 1", "97 1" }

    99

    Returns: 2

  97. {"2 10", "4 15" }

    3

    Returns: 15

  98. {"32 32", "33 34" }

    97

    Returns: 98

  99. {"10 10", "20 200" }

    13

    Returns: 20

  100. {"2 272", "1 166", "10 993", "99 999", "77 234" }

    99

    Returns: 468

  101. {"2 5" }

    1

    Returns: 5

  102. {"3 3" }

    5

    Returns: 6

  103. {"5 10", "6 12" }

    20

    Returns: 40

  104. {"5 45", "2 20" }

    8

    Returns: 80

  105. {"5 45", "4 45" }

    7

    Returns: 90

  106. {"98 99" }

    99

    Returns: 198

  107. {"1 4", "5 15", "2 7", "10 20" }

    99

    Returns: 200

  108. {"2 70", "1 100", "10 200" }

    81

    Returns: 1670

  109. {"3 3", "4 4" }

    8

    Returns: 8

  110. {"1 20", "2 1", "3 2" }

    99

    Returns: 50

  111. {"2 30", "3 20" }

    1

    Returns: 20

  112. {"1 4", "5 15", "2 7", "10 20" }

    8

    Returns: 20

  113. {"5 80", "4 81" }

    8

    Returns: 160

  114. {"1 99", "9 1", "5 8" }

    10

    Returns: 2

  115. {"99 3", "2 2" }

    1

    Returns: 2

  116. {"20 4", "60 3" }

    80

    Returns: 6

  117. {"5 8", "3 5" }

    19

    Returns: 31

  118. {"1 10", "2 9", "3 8", "4 7", "5 6" }

    99

    Returns: 120

  119. {"1 1", "2 1", "3 1", "4 1", "5 1" }

    99

    Returns: 20

  120. {"12 300", "8 100", "5 123" }

    41

    Returns: 600

  121. {"2 272", "1 166", "10 993" }

    87

    Returns: 8926

  122. {"5 5", "2 3" }

    7

    Returns: 8


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: