#12327. 最大按位或数对
最大按位或数对
【普及组/提高】最大按位或数对
题目描述
给定一个长度为 n 的正整数数组 ,请你找出所有满足条件的数对 且 。
对每一对这样的数,计算它们的 按位或(Bitwise OR):
并在所有结果中取 最大值。
如果不存在任何满足条件的数对,则输出 -1。
输入格式
- 第一行:一个整数 n(数组长度)。
- 第二行:n 个正整数,表示数组元素。
输出格式
输出一个整数,表示满足条件的数对的最大按位或值;若无满足条件的数对,输出 -1
。
样例 1
输入
5
2 3 1 7 7
输出
7
解释 满足条件的数对包括:
- (2,3) → 2|3=3
- (2,7) → 7
- (3,7) → 7
- (1,7) → 7 最大值是 7。
样例 2
输入
3
5 5 5
输出
-1
解释
所有元素相等,不存在 d[i] < d[j]
的数对,因此输出 -1。
数据范围
时间限制:1s 内存限制:256MB
提示
- 运算符
|
在 C++ 中表示按位或(bitwise OR)。 - 表达式
a + b - (a & b)
等价于a | b
。