# Maximum xor Value Pair n an Array Without Using Tries

• I am not understanding the implementation of the question in Blog(M) complexity can anyone please help me to understand the flow of the problem.

this is the implementaiton:

``````#include<bits/stdc++.h>
using namespace std;
// Utility function to check number of elements
// having set msb as of pattern
int checkBit(int pattern, int arr[], int n)
{
int count = 0;
for (int i = 0; i < n; i++)
if ((pattern & arr[i]) == pattern)
count++;
return count;
}
// Function for finding maximum and value pair
int maxAND (int arr[], int n)
{
int res = 0, count;

// iterate over total of 30bits from msb to lsb
for (int bit = 31; bit >= 0; bit--)
{
// find the count of element having set  msb
count = checkBit(res | (1 << bit),arr,n);

// if count >= 2 set particular bit in result
if ( count >= 2 )
res |= (1 << bit);
}
return res;
}
// Driver function
int main()
{
int arr[] = {4, 8, 6, 2};
int n = sizeof(arr)/sizeof(arr);
cout << "Maximum AND Value = " << maxAND(arr,n);
return 0;
}
``````