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: 2
(1, 3) and (2, 3) are the only valid pairs.
Input: arr[] = {11, 45, 12, 14, 5}
Output: 3
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++ implementation of the approach #include <bits/stdc++.h> 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 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. |
# 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# 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 // PHP implementation of the approach // Function to return the count of valid pairs function countPairs( $arr , $n )
{ $cnt = 0;
// Check all possible pairs
for ( $i = 0; $i < $n - 1; $i ++)
for ( $j = $i + 1; $j < $n ; $j ++)
if (( $arr [ $i ] |
$arr [ $j ]) <= max( $arr [ $i ],
$arr [ $j ]))
$cnt ++;
return $cnt ;
} // Driver code $arr = array (1, 2, 3);
$n = sizeof( $arr );
echo countPairs( $arr , $n );
// This code is contributed // by Akanksha Rai ?> |
<script> // JavaScript implementation of the approach // Function to return the count of valid pairs function countPairs(arr, n) {
let cnt = 0;
// Check all possible pairs
for (let i = 0; i < n - 1; i++)
for (let j = i + 1; j < n; j++)
if ((arr[i] | arr[j]) <= Math.max(arr[i], arr[j]))
cnt++;
return cnt;
} // Driver code let arr = [1, 2, 3]; let n = arr.length; document.write(countPairs(arr, n)); // This code is contributed by _saurabh_jaiswal </script> |
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.