EduBrick

C. Сколько стоит построение

2000 мс · 256 МБ · всё или ничего

Постройте кучу из массива тем же алгоритмом, что в классе - просеиванием вниз по индексам от ⌊N/2⌋\lfloor N/2 \rfloor до 1, - и выведите суммарное количество обменов.

Это способ увидеть линейность построения своими глазами. Теория обещает, что суммарная работа не превосходит NN; посмотрите, сколько получается на самом деле.

На отсортированном по возрастанию массиве обменов будет много - почти каждый элемент придётся опускать. На отсортированном по убыванию массив уже является кучей, и обменов не будет вовсе. Оба теста в наборе есть.

Сравните полученное число с Nlog⁡2NN \log_2 N: разница между линейным построением и построением вставками видна сразу.

Формат ввода

В первой строке - число NN (1≤N≤1051 \le N \le 10^5).

Во второй - NN целых чисел, по модулю не превосходящих 10910^9. Числа могут повторяться.

Формат вывода

Одно число - суммарное количество обменов при построении.

Примеры

ввод
5
1 2 3 4 5
вывод
3
ввод
6
5 5 5 5 5 5
вывод
0
Войдите, чтобы отправлять решения.