LeetCode-in-Java

3789. Minimum Cost to Acquire Required Items

Medium

You are given five integers cost1, cost2, costBoth, need1, and need2.

There are three types of items available:

You must collect enough items so that the total contribution toward type 1 is at least need1 and the total contribution toward type 2 is at least need2.

Return an integer representing the minimum possible total cost to achieve these requirements.

Example 1:

Input: cost1 = 3, cost2 = 2, costBoth = 1, need1 = 3, need2 = 2

Output: 3

Explanation:

After buying three type 3 items, which cost 3 * 1 = 3, the total contribution to type 1 is 3 (>= need1 = 3) and to type 2 is 3 (>= need2 = 2).
Any other valid combination would cost more, so the minimum total cost is 3.

Example 2:

Input: cost1 = 5, cost2 = 4, costBoth = 15, need1 = 2, need2 = 3

Output: 22

Explanation:

We buy need1 = 2 items of type 1 and need2 = 3 items of type 2: 2 * 5 + 3 * 4 = 10 + 12 = 22.
Any other valid combination would cost more, so the minimum total cost is 22.

Example 3:

Input: cost1 = 5, cost2 = 4, costBoth = 15, need1 = 0, need2 = 0

Output: 0

Explanation:

Since no items are required (need1 = need2 = 0), we buy nothing and pay 0.

Constraints:

Solution

public class Solution {
    public long minimumCost(int cost1, int cost2, int costBoth, int need1, int need2) {
        long min;
        long max;
        long ans;
        min = Math.min(need1, need2);
        max = Math.max(need1, need2);
        ans = (long) need1 * cost1 + (long) need2 * cost2;
        ans = Math.min(ans, min * costBoth + (need1 - min) * cost1 + (need2 - min) * cost2);
        ans = Math.min(ans, max * costBoth);
        return ans;
    }
}