# Count pairs with bitwise OR less than Max

• Difficulty Level : Basic
• Last Updated : 16 Nov, 2022

Given an array arr[] of N integers, the task is to count the pairs of indices (i, j) such that 0 â‰¤ i < j â‰¤ N and arr[i] | arr[j] â‰¤ max(arr[i], arr[j]) where | is the bitwise OR.
Examples:

Input: arr[] = {1, 2, 3}
Output:
(1, 3) and (2, 3) are the only valid pairs.
Input: arr[] = {11, 45, 12, 14, 5}
Output:

Approach: Run two nested loops and check for every possible pair. If arr[i] | arr[j] <= max(arr[i], arr[j]) then increment the count.
Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the count of valid pairs``int` `countPairs(``int` `arr[], ``int` `n)``{``    ``int` `cnt = 0;` `    ``// Check all possible pairs``    ``for` `(``int` `i = 0; i < n - 1; i++)``        ``for` `(``int` `j = i + 1; j < n; j++)``            ``if` `((arr[i] | arr[j]) <= max(arr[i], arr[j]))``                ``cnt++;` `    ``return` `cnt;``}` `// Driver code``int` `main()``{``    ``int` `arr[] = { 1, 2, 3 };``    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]);``    ``cout << countPairs(arr, n);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach` `class` `GFG``{``    ` `// Function to return the count of valid pairs``static` `int` `countPairs(``int` `arr[], ``int` `n)``{``    ``int` `cnt = ``0``;` `    ``// Check all possible pairs``    ``for` `(``int` `i = ``0``; i < n - ``1``; i++)``        ``for` `(``int` `j = i + ``1``; j < n; j++)``            ``if` `((arr[i] | arr[j]) <= Math.max(arr[i], arr[j]))``                ``cnt++;` `    ``return` `cnt;``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `arr[] = { ``1``, ``2``, ``3` `};``    ``int` `n = arr.length;``    ``System.out.println(countPairs(arr, n));``}``}` `// This code is Contributed by Code_Mech.`

## Python3

 `# Python 3 implementation of the approach` `# Function to return the count``# of valid pairs``def` `countPairs(arr, n):``    ``cnt ``=` `0` `    ``# Check all possible pairs``    ``for` `i ``in` `range``(n ``-` `1``):``        ``for` `j ``in` `range``(i ``+` `1``, n, ``1``):``            ``if` `((arr[i] | arr[j]) <``=` `max``(arr[i],``                                         ``arr[j])):``                ``cnt ``+``=` `1` `    ``return` `cnt` `# Driver code``if` `__name__ ``=``=` `'__main__'``:``    ``arr ``=` `[``1``, ``2``, ``3``]``    ``n ``=` `len``(arr)``    ``print``(countPairs(arr, n))``    ` `# This code is contributed by``# Surendra_Gangwar`

## C#

 `// C# implementation of the approach``using` `System;` `class` `GFG``{``    ` `// Function to return the count of valid pairs``static` `int` `countPairs(``int` `[]arr, ``int` `n)``{``    ``int` `cnt = 0;` `    ``// Check all possible pairs``    ``for` `(``int` `i = 0; i < n - 1; i++)``        ``for` `(``int` `j = i + 1; j < n; j++)``            ``if` `((arr[i] | arr[j]) <= Math.Max(arr[i], arr[j]))``                ``cnt++;` `    ``return` `cnt;``}` `// Driver code``static` `void` `Main()``{``    ``int` `[]arr = { 1, 2, 3 };``    ``int` `n = arr.Length;``    ``Console.WriteLine(countPairs(arr, n));``}``}` `// This code is Contributed by mits.`

## PHP

 ``

## Javascript

 ``

Output:

`2`

Time Complexity: O(n2), where n is the size of the given array.
Auxiliary Space: O(1), no extra space is required, so it is a constant.

My Personal Notes arrow_drop_up