ГлавнаяСборникиТурнирыРазделыФорумыУчастникиПечатьПомощьО системе

Разделы > 105. Очереди и очереди с приоритетами > задача:


Обмены в Heapify

Задачи раздела

• Минимум в скользящем окне
• Обмены в Heapify
• Очередь
• Порядковая статистика — 2

Обратная связь

Если у вас есть предложения или пожелания по работе Contester, посетите форум сайта www.contester.ru.

Лимит времени 2000/2000/2000/2000 мс. Лимит памяти 65536/65536/65536/65536 Кб.

Обмены в Heapify
Обмены в Heapify
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
64 мегабайта
ввод
стандартный ввод
вывод
стандартный вывод

Процедура heapify преобразует неупорядоченный массив в двоичную кучу, на вершине которой располагается максимальный элемент:

void heapify(int a[], int size) {

    for (int i = size - 1; i >= 0; i--)

        down(i);

}

Определите, сколько раз будет произведён обмен местами двух элементов массива при выполнении процедуры heapify.

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

Первая строка содержит целое число N (1 ≤ N ≤ 104) — количество элементов массива.

Вторая строка содержит N целых чисел Ai ( - 231 ≤ Ai < 231) — элементы массива.

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

Выведите одно целое число — количество обменов при вызове процедуры heapify для рассматриваемого массива.

Примеры

Входные данные
5
1 2 3 4 5
Выходные данные
3
Входные данные
5
5 4 3 2 1
Выходные данные
0
Входные данные
5
5 3 1 2 4
Выходные данные
1
Для отправки решений необходимо выполнить вход.

www.contester.ru