Ctrl K

Разбить на пары без тяжёлых связок

Средняя
Грузчики носят ящики вдвоём: каждые два ящика связывают в одну связку. Дан массив weights чётной длины — веса ящиков. Разбейте все ящики на пары так, чтобы каждый ящик оказался ровно в одной паре. Вес связки — сумма весов её двух ящиков. Нужно, чтобы самая тяжёлая связка была как можно легче. Верните её вес при оптимальном разбиении.
Пример 1
weights=[4, 1, 7, 6] → 10

Пары (1, 7) и (4, 6) дают суммы 8 и 10. Если поставить 6 и 7 вместе, получится 13 — хуже. Ответ 10.

Пример 2
weights=[5, 5, 2, 8, 3, 7] → 10

Пары (2, 8), (3, 7) и (5, 5) — все суммы равны 10.

Пример 3
weights=[9, 9] → 18
Ограничения
  • 2 ≤ len(weights) ≤ 10⁵
  • len(weights) чётна
  • 1 ≤ weights[i] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяПерестроить середину шеренги СредняяТройки палочек для треугольника СредняяСамая выгодная подработка для каждого СредняяРасстановка против соперников Средняя
загружаем Python…
Вход
weights=[4, 1, 7, 6]
Ожидается
10

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 96 тестов на сервере, включая скрытые.