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

Сборники > Сборник > задача:


Обмены в Heapify

Задачи сборника

• Наибольший общий делитель
• Наибольший общий делитель (прос...
• Наилучший участок
• Наименьшее и наибольшее
• Наименьшее общее кратное
• Непрерывный рюкзак
• Несчастливые дни
• Нечётные числа в массиве
• Обмены в Heapify
• Однотонный флаг
• Ой-ай!
• Окраска кубика
• Округление
• Округление вверх
• Оптимальная цена
• От 1 до N
• От 1 до N кратные K

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

Если у вас есть предложения или пожелания по работе 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