HackerEarth AND choice problem solution

In this HackerEarth AND choice, problem-solution M is alone and he has an array a1,a2,..., an. M wants to choose two integers i,j such that i != j, 1 <= i,j <= n and the value ai & aj(bitwise AND) is maximum. What is the maximum value M can get?

HackerEarth AND choice problem solution.

`#include<bits/stdc++.h>using namespace std;bool hv(int x, int b){    return x & (1 << b);}int main(){    ios_base::sync_with_stdio(false);cin.tie(NULL);    int n;cin >> n;    multiset<int> st;    for(int i=0 ; i<n ; i++){        int d;cin >> d;        st.insert(d);    }    for(int bt=30 ; bt>=0 ; bt --){        if(!hv(*st.rbegin(), bt))            continue;        auto it = st.rbegin();        it ++;        if(!hv(*it, bt)){            int d = *st.rbegin();            st.erase(st.find(d));            d -= (1 << bt);            st.insert(d);            continue;        }        while(!hv(*st.begin(), bt))            st.erase(st.begin());    }    cout << *st.rbegin() << "\n";}`

Second solution

`n = int(input())a = list(map(int, input().split()))ans = 0for i in range(29, -1, -1):    cnt = 0    ans |= 1 << i    for x in a:        if ans & x == ans:            cnt += 1    if cnt < 2:        ans ^= 1 << iprint(ans)`