LeetCode in Kotlin

3814. Maximum Capacity Within Budget

Medium

You are given two integer arrays costs and capacity, both of length n, where costs[i] represents the purchase cost of the ith machine and capacity[i] represents its performance capacity.

You are also given an integer budget.

You may select at most two distinct machines such that the total cost of the selected machines is strictly less than budget.

Return the maximum achievable total capacity of the selected machines.

Example 1:

Input: costs = [4,8,5,3], capacity = [1,5,2,7], budget = 8

Output: 8

Explanation:

Example 2:

Input: costs = [3,5,7,4], capacity = [2,4,3,6], budget = 7

Output: 6

Explanation:

Example 3:

Input: costs = [2,2,2], capacity = [3,5,4], budget = 5

Output: 9

Explanation:

Constraints:

Solution

import kotlin.math.max
import kotlin.math.min

class Solution {
    fun maxCapacity(costs: IntArray, capacity: IntArray, budget: Int): Int {
        val mxCap = IntArray(budget)
        var maxCap = 0
        for (i in costs.indices) {
            val cost = costs[i]
            val cap = capacity[i]
            if (cost >= budget) {
                continue
            }
            maxCap = max(maxCap, cap)
            if (cost * 2 < budget) {
                maxCap = max(maxCap, mxCap[cost] + cap)
            }
            if (cap > mxCap[cost]) {
                mxCap[cost] = cap
            }
        }
        val preSum = IntArray(budget)
        for (i in 1..<budget) {
            val rem = min(budget - i - 1, i - 1)
            maxCap = max(maxCap, mxCap[i] + preSum[rem])
            preSum[i] = max(preSum[i - 1], mxCap[i])
        }
        return maxCap
    }
}