Ctrl K

Самый большой многоугольник из палок

Средняя
Есть набор палок, их длины — в массиве sticks. Из части палок нужно сложить многоугольник: у него хотя бы 3 стороны, и самая длинная сторона строго меньше суммы всех остальных. Если это условие выполнено, многоугольник с такими сторонами всегда существует. Каждую палку можно использовать не больше одного раза. Верните наибольший возможный периметр (сумму длин сторон) такого многоугольника или -1, если сложить его нельзя.
Пример 1
sticks=[2, 3, 4, 20] → 9

Палка длиной 20 длиннее суммы остальных (9), её брать нельзя. Из 2, 3 и 4 получается треугольник: 4 < 2 + 3, периметр 9.

Пример 2
sticks=[1, 2, 3] → -1

3 не меньше 1 + 2, фигура вырождается в отрезок — многоугольник не собрать.

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

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