Longest Subarray

Added: 2025-09-13 03:53:31

Question Image

Longest Subarray

Answer

✏️ Edit
def solve(arr):
    n = len(arr)
    if n == 0:
        return -1
    
    prefix_or = [0] * (n + 1)
    for i in range(n):
        prefix_or[i + 1] = prefix_or[i] | arr[i]
    
    suffix_or = [0] * (n + 1)
    for i in range(n - 1, -1, -1):
        suffix_or[i] = suffix_or[i + 1] | arr[i]
    
    total_or = prefix_or[n]
    
    if total_or == 0:
        return n
    
    max_length = -1
    
    for i in range(n):
        subarray_or = 0
        for j in range(i, n):
            subarray_or |= arr[j]
            remaining_or = prefix_or[i] | suffix_or[j + 1]
            
            if subarray_or == remaining_or:
                max_length = max(max_length, j - i + 1)
    
    return max_length

t = int(input())
for _ in range(t):
    n = int(input())
    arr = list(map(int, input().split()))
    print(solve(arr))