아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

New Divide

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

요약
배열의 각 접두사마다 두 부분으로 나누어 두 부분의 XOR 합이 최대가 되는 값을 구한다.
난이도

어려움10점 중 9점

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

문제

kk개의 정수 b1,b2,…,bkb_1, b_2, \ldots, b_k로 이루어진 배열을 생각하자. x⊕yx \oplus y는 xx와 yy의 비트별 배타적 논리합이다. 배열 bb의 선형 파워를 다음과 같이 정의한다.

LP(b)=max⁡i=0,1,…,k(b1⊕…⊕bi)+(bi+1⊕…⊕bk).\mathit{LP} (b) = \max\limits_{i = 0, 1, \ldots, k} (b_1 \oplus \ldots \oplus b_i) + (b_{i + 1} \oplus \ldots \oplus b_k)\text{.}

nn개의 정수로 이루어진 배열 aa가 주어진다. aa의 모든 접두사에 대한 선형 파워를 구하라.

입력

첫째 줄에 배열의 길이인 양의 정수 nn이 주어진다. (1≤n≤1061 \le n \le 10^6)

둘째 줄에 nn개의 정수 aia_i가 주어진다. (0≤ai≤1060 \le a_i \le 10^6)

출력

mathitLP(a1) mathit{LP} (a_1), mathitLP(a1,a2) mathit{LP} (a_1, a_2), …\ldots, mathitLP(a1,a2,…,an) mathit{LP} (a_1, a_2, \ldots, a_n)을 공백으로 구분하여 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    5
    1 2 3 4 5
    
    예상 출력
    1 3 6 10 9
    
  2. 예제 2

    입력
    10
    11 13 14 14 9 8 0 10 10 7
    
    예상 출력
    11 24 20 24 15 23 23 17 23 30