A. Сколько обменов при подъёме
Как классная задача про увеличение приоритета, но вместо конечного индекса выведите количество обменов, которые сделало просеивание вверх.
Величины связаны просто: количество обменов - это разница глубин начальной и конечной позиции. Но считать её напрямую по формуле нельзя: глубина - это , и на границах степеней двойки легко ошибиться. Проще завести счётчик прямо в цикле.
Заодно это способ увидеть, насколько дёшево просеивание на практике: у случайной кучи большинство элементов - листья, и подъём почти всегда останавливается через один-два шага.
Формат ввода
В первой строке - размер кучи (), во второй - сама куча из различных чисел.
В третьей - число запросов (), далее пар и .
Формат вывода
Для каждого запроса - количество обменов.
После всех запросов - строка с кучей в конечном состоянии.
Примеры
6 12 6 8 3 4 7 2 5 11 3 6
2 0 15 12 14 3 6 7