atcoder#ABC150E. [ABC150E] Change a Little Bit

[ABC150E] Change a Little Bit

题目描述

0, 1 0,\ 1 からなる長さ N N の異なる 2 2 つの数列 S, T S,\ T に対し、関数 f(S, T) f(S,\ T) を以下のように定めます。

  • S S に対し以下の操作を繰り返して T T と等しくすることを考える。このとき行う操作のコストの和として考えられる最小の値が f(S, T) f(S,\ T) である。

    • Si S_i を (0 0 から 1 1 、もしくは 1 1 から 0 0 に) 変更する。この操作のコストは、変更の直前に Sj  Tj (1  j  N) S_j\ \neq\ T_j\ (1\ \leq\ j\ \leq\ N) であったような整数 j j の個数を D D として、D × Ci D\ \times\ C_i である。

0, 1 0,\ 1 からなる長さ N N の異なる 2 2 つの数列の組 (S, T) (S,\ T) 2N × (2N  1) 2^N\ \times\ (2^N\ -\ 1) 通り考えられます。これらすべてに対する f(S, T) f(S,\ T) の和を 109+7 10^9+7 で割った余りを計算してください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N C1 C_1 C2 C_2 \cdots CN C_N

输出格式

f(S, T) f(S,\ T) の和を 109+7 10^9+7 で割った余りを出力せよ。

题目大意

题目描述:

对于两个长度为 nn01\texttt{01} 序列 S,TS,T ,我们定义 f(S,T)f(S,T) 为通过以下操作将 SS 修改为 TT 的最小代价和: 选择一个 SS 中的二进制位 SiS_{i} ,然后改变 SiS_{i}01\texttt{01} 状态,代价为 D×CiD \times C_{i},其中 DD 是此次操作前满足 SjTjS_{j}\ne T_{j} 的整数 jj 的数量,CiC_{i} 是一个给定的序列中的一个值。

求当 SS2n2^n 种不同的状态,TT2n2^n 种不同的状态时,f(S,T)f(S,T) 的和对 10000000071000000007 取模的结果。

输入格式:

第一行一个整数 nn

第二行 nn 个整数 CiC_{i}

输出格式:

一行一个整数,表示答案

说明/提示:

1n200000,1Ci1091 \le n \le 200000 , 1 \le C_{i} \le 10^9

1
1000000000
999999993
2
5 8
124
5
52 67 72 25 79
269312

提示

制約

  • 1  N  2 × 105 1\ \leq\ N\ \leq\ 2\ \times\ 10^5
  • 1  Ci  109 1\ \leq\ C_i\ \leq\ 10^9
  • 入力は全て整数である

Sample Explanation 1

0, 1 0,\ 1 からなる長さ 1 1 の異なる 2 2 つの数列の組 (S, T) (S,\ T) は以下の 2 2 通りが考えられます。 - S = (0), T = (1): S\ =\ (0),\ T\ =\ (1): S1 S_1 1 1 に変更することでコスト 1000000000 1000000000 S = T S\ =\ T とできるため、f(S, T) = 1000000000 f(S,\ T)\ =\ 1000000000 です。 - S = (1), T = (0): S\ =\ (1),\ T\ =\ (0): S1 S_1 0 0 に変更することでコスト 1000000000 1000000000 S = T S\ =\ T とできるため、f(S, T) = 1000000000 f(S,\ T)\ =\ 1000000000 です。 これらの和は 2000000000 2000000000 であり、これを 109+7 10^9+7 で割った余りは 999999993 999999993 です。

Sample Explanation 2

0, 1 0,\ 1 からなる長さ 2 2 の異なる 2 2 つの数列の組 (S, T) (S,\ T) 12 12 通り存在し、例えば以下のものが考えられます。 - S = (0, 1), T = (1, 0) S\ =\ (0,\ 1),\ T\ =\ (1,\ 0) この場合、1 1 回目の操作で S1 S_1 1 1 に変更し、2 2 回目の操作で S2 S_2 0 0 に変更するとき、操作のコストの和は 5 × 2 + 8 = 18 5\ \times\ 2\ +\ 8\ =\ 18 です。これより小さいコストで S = T S\ =\ T とすることはできないので、f(S, T) = 18 f(S,\ T)\ =\ 18 です。