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