SP28607 DALTSUM - Descending Alternating Sums

题目描述

给定一个包含 $k$ 个整数的数组 **A**(元素可以重复),我们为这个数组定义一种运算叫「降序交错和」,记为 **F(A)**。计算方法是,先对数组进行降序排列。排列后,假设元素依次为 **A $_{1}$** $\ge$ **A $_{2}$** $\ge$ ... $\ge$ **A $_{k}$**。则该数组的降序交错和公式为: **F(A) = A $_{1}$ - A $_{2}$ + A $_{3}$ - ... + (-1) $^{k+1}$ A $_{k}$**。 举个例子,若 **A = [5, -3, 8, 2, 0, -5]**,对其进行降序排序得到 **A = [8, 5, 2, 0, -3, -5]**。则这个数组的降序交错和为 **8 - 5 + 2 - 0 + (-3) - (-5) = 7**。特别地,空数组的降序交错和定义为 0。 现在,你需要找到一个包含 $n$ 个整数的数组 **A**($1 \le n \le 10^5$, $|A_i| \le 10^9$)的所有子集的降序交错和的总和。注意,这个和的结果需要对 **M = 10^9 + 7** 取模。假如数组 **A** 有 **2^n** 个子集,分别为 **S $_{1}$, S $_{2}$, ..., S $_{2^n}$**,你需要输出下面这个结果对 **M** 取模的值: **F(S $_{1}$) + F(S $_{2}$) + ... + F(S $_{2^n}$)**。 请注意,任何整数对一个正整数取模后得到的结果必定是一个非负数。因此,输出结果 **R** 应保证 **0 ≤ R < M**。

输入格式

第一行包含一个整数 **n**,表示数组 **A** 的元素个数。 第二行包含 **n** 个整数 **A $_{1}$, A $_{2}$, ..., A $_{n}$**,表示数组 **A** 的具体元素。

输出格式

输出一个整数,表示数组 **A** 中所有子集的降序交错和的总和对 **M = 10^9 + 7** 取模后的结果。 **本翻译由 AI 自动生成**