CF313C Ilya and Matrix

题目描述

Ilya 是一只非常善良的狮子。他喜欢数学。在所有的数学对象中,他最喜欢的是矩阵。现在他遇到了一个需要解决的复杂矩阵问题。 他有一个大小为 $2^{n}×2^{n}$ 的方阵和 $4^{n}$ 个整数。你需要将所有这些数填入矩阵中(每个格子填一个数),使得按题目描述计算得出的矩阵美丽值最大。 一个 $2^{n}×2^{n}$ 大小的矩阵的美丽值按如下算法计算: 1. 找到矩阵中的最大元素,记为 $m$; 2. 如果 $n=0$,则该矩阵的美丽值为 $m$。否则,将矩阵划分为 $4$ 个互不相交的 $2^{n-1}×2^{n-1}$ 的子矩阵,此时矩阵的美丽值为 $m$ 加上这四个子矩阵各自的美丽值之和。 如你所见,这一算法是递归的。 请你帮助 Ilya 解决问题,并输出经过安排后可获得的最大矩阵美丽值。

输入格式

第一行包含一个整数 $4^{n}$($1 \leq 4^{n} \leq 2\cdot 10^{6}$)。 第二行包含 $4^{n}$ 个整数 $a_{i}$($1 \leq a_{i} \leq 10^{9}$)——需要填入 $2^{n}×2^{n}$ 矩阵的数字。

输出格式

输出一个整数,即可获得的最大矩阵美丽值。 请不要在 C++ 中使用 %lld 读取或输出 64 位整数。建议使用 cin、cout 或者 %I64d。

说明/提示

考虑第二个样例。你应该将数字这样排入矩阵: `

1 2

3 4

` 那么矩阵的美丽值为:$4 + 1 + 2 + 3 + 4 = 14$。 由 ChatGPT 5 翻译