给你一个整数数组 nums 和两个整数 k 与 m。
你 最多 可以执行 k 次操作。在每次操作中,你可以选择任意下标 i 并将 nums[i] 增加 1。
返回在执行最多 k 次操作后,任意大小为 m 的 子集 的 按位与 结果的 最大 可能值。
示例 1:
输入: nums = [3,1,2], k = 8, m = 2
输出: 6
解释:
m = 2 的子集。选择下标 [0, 2]。nums[0] = 3 增加到 6,并使用 4 次操作将 nums[2] = 2 增加到 6。k = 8。[6, 6],它们的按位与结果是 6,这是可能的最大值。示例 2:
输入: nums = [1,2,8,4], k = 7, m = 3
输出: 4
解释:
m = 3 的子集。选择下标 [0, 1, 3]。nums[0] = 1 增加到 4,使用 2 次操作将 nums[1] = 2 增加到 4,并保持 nums[3] = 4 不变。k = 7。[4, 4, 4],它们的按位与结果是 4,这是可能的最大值。示例 3:
输入: nums = [1,1], k = 3, m = 2
输出: 2
解释:
m = 2 的子集。选择下标 [0, 1]。k = 3。[2, 2],它们的按位与结果是 2,这是可能的最大值。
提示:
1 <= n == nums.length <= 5 * 1041 <= nums[i] <= 1091 <= k <= 1091 <= m <= n