[位運算]And Operation(結論)
阿新 • • 發佈:2021-01-06
技術標籤:位運算
https://vjudge.net/contest/270998#problem/B
結論:a & b <= min(a, b),於是可以排序後二重迴圈,無法更新答案直接break,但是時間複雜度分析不出來。
#include <iostream>
#include <algorithm>
using namespace std;
int a[300005];
int main()
{
int n;
cin >> n;
for (int i = 0; i < n; ++i) cin >> a[i] ;
sort(a, a + n);
int ans = a[n - 1] & a[n - 2];
for (int i = n - 1; i >= 0; --i){
if (a[i] < ans) break;
for (int j = i - 1; j >= 0; --j){
if (a[j] < ans) break;
ans = max(ans, a[i] & a[j]);
}
}
cout << ans << endl;
return 0;
}