1. 程式人生 > 其它 >[位運算]And Operation(結論)

[位運算]And Operation(結論)

技術標籤:位運算

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; }