HomeVolumesContestsSectionsForumsUsersPrintHelpAbout

Sections > Unsorted > problem:


Обмены в Heapify

Section problems

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

Feedback

If you notice incorrect translations in Contester, please let author know.

Time limit 2000/2000/2000/2000 ms. Memory limit 65536/65536/65536/65536 Kb.

Обмены в 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