만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

문제 수 줄이기

시간 제한1초메모리 제한1024 MB

요약
인접한 두 구간의 길이가 서로 다르도록 배열을 연속된 구간으로 나누고, 각 구간 XOR 값의 합이 최대가 되는 값을 구합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 비트 연산, 트라이
정답자
아직 제출이 없습니다

문제

민찬이는 KSA 학생들을 위해 11번부터 NN번까지 번호가 붙은 NN개의 문제로 이루어진 문제 목록을 준비했다. ii번 문제의 레벨은 A_iA\_i이다.

학생들이 문제가 너무 많다고 불평하자, 민찬이는 문제 목록을 한 개 이상의 연속된 구간으로 나눈 뒤, 구간마다 그 구간에 속한 문제들을 새로운 문제 하나로 대체하려고 한다. 각 구간에는 문제가 적어도 하나 있어야 한다. 또한 KSA 학생들을 더 헷갈리게 하려고, 인접한 두 구간의 문제 수는 서로 달라야 한다.

새로운 문제의 레벨은 그 구간에 속한 문제들의 레벨을 모두 bitwise XOR한 값이다. 민찬이는 KSA 학생들의 실력을 키우기 위해 새로운 문제들의 레벨 합을 최대로 만들려고 한다. 문제 목록을 적절히 나누었을 때, 새로운 문제들의 레벨 합의 최댓값을 구하여라.

입력

첫 번째 줄에 정수 NN이 주어진다.

두 번째 줄에 NN개의 정수 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots, A\_N이 공백으로 구분되어 주어진다.

출력

새로운 문제들의 레벨 합의 최댓값을 출력한다.

제한

  • 1≤N≤2×1051 \leq N \leq 2 \times 10^5
  • 0≤A_i≤1090 \leq A\_i \leq 10^9 (1≤i≤N)(1 \leq i \leq N)

힌트

음이 아닌 두 정수 AA와 BB의 bitwise XOR, 즉 A⊕BA \oplus B는 다음과 같이 정의된다.

  • A⊕BA \oplus B를 이진수로 나타냈을 때 2k2^k의 자리 숫자(k≥0k \geq 0)는 AA와 BB에서 그 자리의 숫자 중 정확히 하나만 11이면 11이고, 그렇지 않으면 00이다.

예를 들어, 3⊕5=63 \oplus 5 = 6이다. (이진수로 나타내면 011⊕101=110011 \oplus 101 = 110이다.)

예제3

  1. 예제 1

    입력
    3
    5 3 2
    
    예상 출력
    8
    
  2. 예제 2

    입력
    4
    6 2 4 6
    
    예상 출력
    18
    
  3. 예제 3

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