M - Make Palindromic Prefixes

2 secs 1024 MB
uni_kakurenbo's icon uni_kakurenbo

マルチテストについての説明はこちら (サンプル問題を確認されていない方のみお読みください。)


配点:400400

問題文

NN 個の整数 A1,A2,,ANA_1, A_2, \ldots, A_N があります.

また,任意の非負整数列 X=(X1,X2,,XX)X = (X_1, X_2, \ldots, X_{|X|}) に対して次の操作を 00 回以上好きなだけ行えます:

  • 1iX1 \leq i \leq |X| かつ 0p0 \leq p なる 22 整数 i,pi, p を自由に選び,XiX_iXipX_i \,|\, p で置き換える.
    • なお,22 非負整数 a,ba, b に対して aba \,|\, ba,ba, bbitwise OR を表す.
  • このときちょうど pp だけコストがかかる.

1kN1 \leq k \leq N なる整数 kk それぞれについて,以下の互いに独立した問題を解いてください:

  • B(A1,A2,,Ak)B \coloneqq (A_1, A_2, \ldots, A_k)
  • 数列 BB を回文にするために必要なコストの総和の最小値を求めよ.
    • なお,列 X=(X1,X2,,XX)X = (X_1, X_2, \ldots, X_{|X|}) が回文であるとは,1iX1 \leq i \leq |X| なる任意の ii に対して Xi=XXi+1X_i = X_{|X|-i+1} が満たされることを指す.

制約

  • 1Φ1041 \leq \Phi \leq 10^4
  • 1N1 \leq N
  • ϕΦϕ(N)5×105\sum_{\phi} \Phi_{\phi}(N) \leq 5 \times 10^5
  • 0Ai<210(1iN)0 \leq A_i < \bold{2^{10}} \scriptsize \; (1 \leq i \leq N)
  • 入力はすべて整数

入力

各テストケースの入力は,それぞれ以下の形式で与えられる:

NN
A1A2ANA_1 \enspace A_2 \enspace \ldots \enspace A_N

出力

NN 個の整数を空白もしくは改行区切りで出力せよ.
i  (1in)i \; \scriptsize (1 \leq i \leq n) 番目には k=ik = i に対する問題の答えを出力せよ.

サンプル

入力例1
1
5
0 1 2 3 4
出力例1
0 1 2 6 6

たとえば k=4k = 4 のとき, B=(0,1,2,3)B = (0, 1, 2, 3) であり (i,p)=(1,3),(2,2),(3,1)(i, p) = (1, 3), (2, 2), (3, 1) として順に 33 回の操作を行うことで B=(3,3,3,3)B = (3, 3, 3, 3) となり条件を満します.
このとき 33 回の操作でかかるコストの総和は 3+2+1=63 + 2 + 1 = 6 で,これ未満のコストで目標は達成できないため,66 が答えです.


入力例2
2
10
0 0 0 0 0 0 0 0 0 0
9
9 9 8 2 4 4 3 5 3
出力例2
0 0 0 0 0 0 0 0 0 0
0 0 1 12 24 36 35 40 39

提出


Go (1.21)