XOR 부분 행렬

시간 제한2초메모리 제한512 MB

요약
A[i][j] = V[i] xor U[j]로 만든 N×M 행렬에서 모든 원소를 xor한 값이 가장 큰 부분행렬을 찾는다.
난이도

어려움10점 중 8점

유형
비트 연산, 트라이, 누적 합, 수학
정답자
아직 제출이 없습니다

문제

크기가 N인 배열 V와 크기가 M인 배열 U로 크기가 N×M인 행렬 A를 만들 수 있다. 이때 Aij = Vi xor Uj이다.

A의 부분 행렬 중에서 부분 행렬에 포함된 원소를 모두 xor한 값이 가장 큰 것을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 배열의 크기 N과 M이 주어진다. 둘째 줄에는 V1, V2, ..., VN이, 셋째 줄에는 U1, U2, ..., UM이 주어진다.

출력

A의 부분 행렬 중에서 부분 행렬에 포함된 원소를 모두 xor한 값이 가장 큰 것을 출력한다.

제한

  • 1 ≤ N, M ≤ 1,000
  • 0 ≤ Vi, Uj < 229

예제3

  1. 예제 1

    입력
    3 4
    5 3 1
    2 1 2 4
    
    예상 출력
    7
    
  2. 예제 2

    입력
    3 3
    10 12 4
    5 10 9
    
    예상 출력
    15
    
  3. 예제 3

    입력
    3 3
    1 2 1
    4 2 8
    
    예상 출력
    15