что это за синтаксис for (const auto& [ l, r ] :workingIntervals) ? компилятор ругается... Хм... и я конечно не специалист но алгоритм(код)-решение второй задачи совсем не рабочий. Нужны еще циклы заполнения массива updates, а не просто ++updates[l] и --updates[r]!!!
Может плюсы старые? Такой синтаксис с C++ 17 появился. Можешь загуглить Structured binding declaration Позволяет декомпозировать структуры включая std::pair, std::turple. Т.е сразу в цикле получаешь поля структуры
А почему во 2 задаче интервьювер отказался от варианта со сканирующей прямой (sweep line)? Он работает во всех случаях, так как таймеры у нас могут быть нецелые
Замудрил с проверками. Там все просто: arr.sort()
min_delta = abs(target - arr[0] - arr[1])
min_diff_pair = (arr[0], arr[1])
n = len(arr)
i, j = 0, n - 1
while i < j:
targetij = target - arr[i] - arr[j]
if min_delta > abs(targetij):
min_delta = abs(targetij)
min_diff_pair = (arr[i], arr[j])
if targeti < 0: j -= 1
elif targeti > 0: i += 1
else:
break
print(*min_diff_pair)
что это за синтаксис for (const auto& [ l, r ] :workingIntervals) ? компилятор ругается...
Хм... и я конечно не специалист но алгоритм(код)-решение второй задачи совсем не рабочий.
Нужны еще циклы заполнения массива updates, а не просто ++updates[l] и --updates[r]!!!
Может плюсы старые? Такой синтаксис с C++ 17 появился. Можешь загуглить Structured binding declaration
Позволяет декомпозировать структуры включая std::pair, std::turple. Т.е сразу в цикле получаешь поля структуры
А почему во 2 задаче интервьювер отказался от варианта со сканирующей прямой (sweep line)? Он работает во всех случаях, так как таймеры у нас могут быть нецелые
Через эту идею и решались такие задачи в какой-то из тренировок)
Он списывает)
Мне тоже так кажется на втором собесе чел просто в угол постоянно подсматривал, почти через каждое слово