CF1329C.Drazil Likes Heap

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Drazil likes heap very much. So he created a problem with heap:

There is a max heap with a height hh implemented on the array. The details of this heap are the following:

This heap contains exactly 2h12^h - 1 distinct positive non-zero integers. All integers are distinct. These numbers are stored in the array aa indexed from 11 to 2h12^h-1 . For any 1<i<2h1 < i < 2^h , a[i]<a[i2]a[i] < a[\left \lfloor{\frac{i}{2}}\right \rfloor] .

Now we want to reduce the height of this heap such that the height becomes gg with exactly 2g12^g-1 numbers in heap. To reduce the height, we should perform the following action 2h2g2^h-2^g times:

Choose an index ii , which contains an element and call the following function ff in index ii :

Note that we suppose that if a[i]=0a[i]=0 , then index ii don't contain an element.

After all operations, the remaining 2g12^g-1 element must be located in indices from 11 to 2g12^g-1 . Now Drazil wonders what's the minimum possible sum of the remaining 2g12^g-1 elements. Please find this sum and find a sequence of the function calls to achieve this value.

输入格式

The first line of the input contains an integer tt ( 1t700001 \leq t \leq 70\,000 ): the number of test cases.

Each test case contain two lines. The first line contains two integers hh and gg ( 1g<h201 \leq g < h \leq 20 ). The second line contains n=2h1n = 2^h-1 distinct positive integers a[1],a[2],,a[n]a[1], a[2], \ldots, a[n] ( 1a[i]<2201 \leq a[i] < 2^{20} ). For all ii from 22 to 2h12^h - 1 , a[i]<a[i2]a[i] < a[\left \lfloor{\frac{i}{2}}\right \rfloor] .

The total sum of nn is less than 2202^{20} .

输出格式

For each test case, print two lines.

The first line should contain one integer denoting the minimum sum after reducing the height of heap to gg . The second line should contain 2h2g2^h - 2^g integers v1,v2,,v2h2gv_1, v_2, \ldots, v_{2^h-2^g} . In ii -th operation f(vi)f(v_i) should be called.

输入输出样例

  • 输入#1

    2
    3 2
    7 6 3 5 4 2 1
    3 2
    7 6 5 4 3 2 1

    输出#1

    10
    3 2 3 1
    8
    2 1 3 1
首页