CF1329C Drazil Likes Heap

题目描述

Drazil 非常喜欢堆这个数据结构。因此他造了一段关于堆的题目: 有一个高度为 $h$ 的大根堆存储在数组内。具体情况如下: 这个堆中有恰好 $2 ^ h - 1$ 个正整数,这些正整数两两不同。这些数存储在数组 $a$ 内下标 $1$ 到 $2 ^ h - 1$ 的位置。对于任意的 $1 \lt i \lt 2 ^ h$,都有 $a[i] \lt a\left[ \left\lfloor \frac{i}{2} \right\rfloor \right]$。 现在我们想要减小这个堆的高度到 $g$,使得堆中恰好只有 $2 ^ g - 1$ 个数。为了减小高度,我们需要进行下述操作 $2 ^ h - 2 ^ g$ 次: 选择一个包含有一个元素的下标 $i$,然后用 $i$ 调用函数 $f$,函数 $f$ 定义如下: 注意如果 $a[i] = 0$,那我们认为下标 $i$ 不包含一个元素。 在所有操作后,剩下的 $2 ^ g - 1$ 个元素需要位于下标在 $1$ 到 $2 ^ g - 1$ 中的位置。现在 Drazil 想要知道,剩下的 $2 ^ g - 1$ 个数之和最小可能是多少。请计算这个最小的和,并找到一个能够达到最小值的操作序列。

输入格式

输出格式