94
правки
Изменения
Нет описания правки
if ((left) div 2) * 2 + 1 == left // Проверяем, является ли левая граница правым сыном
result = min(result, data[left]); // Если является, то пересчитаем результат и перенесем левую границу
left = (left + 1) / div 2;
else
left = (left) / div 2; // Если не является, то установим границу на родительский элемент текущей границы
if ((right) div 2) * 2 == right // Аналогично проделываем операции с правой границей
result = min(result, data[right]);
right = (right - 1) / div 2;
else
right = (right) / div 2;
if left == right // После окончания цикла проверяем совпали ли границы
result = min(result, data[left]); // Если надо пересчитываем результат