给你一个整数数组 nums 和三个整数 k、op1 和 op2。
你可以对 nums 执行以下操作:
i,将 nums[i] 除以 2,并 向上取整 到最接近的整数。你最多可以执行此操作 op1 次,并且每个下标最多只能执行一次。i,仅当 nums[i] 大于或等于 k 时,从 nums[i] 中减去 k。你最多可以执行此操作 op2 次,并且每个下标最多只能执行一次。注意: 两种操作可以应用于同一下标,但每种操作最多只能应用一次。
返回在执行任意次数的操作后,nums 中所有元素的 最小 可能 和 。
示例 1:
输入: nums = [2,8,3,19,3], k = 3, op1 = 1, op2 = 1
输出: 23
解释:
nums[1] = 8 应用操作 2,使 nums[1] = 5。nums[3] = 19 应用操作 1,使 nums[3] = 10。[2, 5, 3, 10, 3],在应用操作后具有最小可能和 23。示例 2:
输入: nums = [2,4,3], k = 3, op1 = 2, op2 = 1
输出: 3
解释:
nums[0] = 2 应用操作 1,使 nums[0] = 1。nums[1] = 4 应用操作 1,使 nums[1] = 2。nums[2] = 3 应用操作 2,使 nums[2] = 0。[1, 2, 0],在应用操作后具有最小可能和 3。
提示:
1 <= nums.length <= 1000 <= nums[i] <= 1050 <= k <= 1050 <= op1, op2 <= nums.length