Maximise the OR Sum

Easy
0/40
Average time to solve is 20m
profile
Contributed by
5 upvotes
Asked in company
Elgin Industries

Problem statement

You are given two arrays of the positive integers. You are required to select two sub-arrays of equal length, one from each array, such that the sum of the OR of two sub-arrays is maximum. Your task is to return the maximum sum possible.

An array ‘C’ is a subarray of array ‘D’ if ‘C’ can be obtained from ‘D’ by deletion of several elements from the beginning and several elements from the end.

Example : let ‘arr’ = [1,0,0] then the possible subarrays of ‘arr’ will be- {1}, {0},{0},{1,0},{0,0},{1,0,0}.

For Example:
Let the first array be : ‘arr1’ = {1,5,8,4} and the second array be ‘arr2’ = {3,7,16,1}

For this, the maximum sum takes the sub-array {5,8} from the first ‘arr1’ and {7,16} from arrays, two, the OR sum will be 13 + 23 = 26, which is maximum.
Detailed explanation ( Input/output format, Notes, Images )
Input Format:
The first line contains a single integer ‘T’ denoting the number of test cases to be run. Then the test cases follow.

The first line of each test case contains an integer ‘N’ denoting the number of elements in the array.

The second line contains ‘N’ space-separated integers denoting the elements of the first array.

The third line contains ‘N’ space-separated integers denoting the elements of the second array.
Output Format:
For each test case, print an integer denoting the maximum OR sum.

Output for each test case will be printed in a separate line.
Note:
You are not required to print anything; it has already been taken care of. Just implement the function.
Constraints:
1 <= T <= 10
1 <= N <= 10^5
1 <= arr1[i], arr2[i] <= 10^5

Time Limit: 1 sec.
Sample Input 1:
2
4
1 5 8 4
3 7 16  1 
5
1 3 4 2 2
1 3 12 3 1
Sample Output 1:
36
22
Explanation For Sample Output 1:
For test case one:-
Select subarray {3,4,2} and {3,12,3}, the max OR sum will be 22.

For test case two:-
Select subarray {5,8} and {7,16}, the max OR sum will be 36.
Sample Input 2:
2
5
1 2 3 4 5
6 7 8 9 10
5
1 3 5 7 9
2 4 6 8 10
Sample Output 2:
22
29
Hint

The logical OR of two Numbers is always greater than or equal to the two numbers.

Approaches (1)
Using Logical OR Property

Find the OR sum of both arrays and add them as the logical OR of two Numbers is always greater than or equal to the two numbers.

 

Algorithm :

 

  1. Declare two variables ‘SUM1’ and ‘SUM2’ of type integer and initialize them with 0.
  2. Iterate from 0 to ‘N’ - 1 on both arrays i.e. ‘ARR1’ and ‘ARR2’. (say iterator be i).
    1. Update ‘SUM1’ as ‘SUM1’ = ‘SUM1’ | ‘ARR1[i]’.
    2. Update ‘SUM2’ as ‘SUM2’ = ‘SUM2’ | ‘ARR2[i]’.
  3. Return ‘SUM1’ + ‘SUM2’.
Time Complexity

O(N), where N is the number of elements in the array.


 

Since we are traversing on both the array once, the overall time complexity will be O(N).

Space Complexity

O(1).

 

Constant extra space is used.

Code Solution
(100% EXP penalty)
Maximise the OR Sum
Full screen
Console