Олимпиадный тренинг

Задача . C. Drazil любит кучи


Drazil очень любит кучи, поэтому он придумал задачу про кучу:

Есть куча на максимум глубины \(h\), реализованная на массиве. Эта куча устроена следующим образом: куча содержит ровно \(2^h - 1\) различных положительных ненулевых целых чисел. Все целые числа различны. Эти числа содержатся в массиве \(a\), в котором элементы пронумерованы от \(1\) до \(2^h-1\). Для всех \(1 < i < 2^h\), \(a[i] < a[\left \lfloor{\frac{i}{2}}\right \rfloor]\).

Теперь он хочет уменьшить глубину кучи так, чтобы глубина стала \(g\), и куча содержала ровно \(2^g-1\) чисел. Чтобы уменьшить глубину, нужно применить следующую операцию \(2^h-2^g\) раз:

Выбрать индекс \(i\), который содержит элемент, и запустить функцию \(f\) от индекса \(i\):

Обратите внимание, что мы считаем, что если \(a[i]=0\), то индекс \(i\) не содержит элемент.

После всех операций, оставшиеся \(2^g-1\) элементов должны находиться в индексах от \(1\) до \(2^g-1\). Теперь Drazil хочет узнать, какая может быть минимальная сумма оставшихся \(2^g-1\) элементов. Пожалуйста, найдите эту сумму и последовательность вызовов функции, на которой эта сумма достигается.

Входные данные

В первой строке записано одно целое число \(t\) (\(1 \leq t \leq 70\,000\)): количество наборов входных данных.

Каждый набор входных данных содержит две строки. В первой строке записаны два целых числа \(h\) и \(g\) (\(1 \leq g < h \leq 20\)). Во второй строке записаны \(n = 2^h-1\) различных положительных целых чисел \(a[1], a[2], \ldots, a[n]\) (\(1 \leq a[i] < 2^{20}\)). Для всех \(i\) от \(2\) до \(2^h - 1\), \(a[i] < a[\left \lfloor{\frac{i}{2}}\right \rfloor]\).

Сумма по всем \(n\) меньше чем \(2^{20}\).

Выходные данные

Для каждого набора входных данных, выведите две строки.

В первой строке вы должны вывести минимальную сумму элементов после уменьшения глубины кучи до \(g\). Вторая строка должна содержать \(2^h - 2^g\) целых чисел \(v_1, v_2, \ldots, v_{2^h-2^g}\). В \(i\)-й операции должна быть вызвана \(f(v_i)\).


Примеры
Входные данныеВыходные данные
1 2
3 2
7 6 3 5 4 2 1
3 2
7 6 5 4 3 2 1
10
3 2 3 1
8
2 1 3 1

time 1500 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя