Ctrl K

Порог, приближающий сумму

Средняя
Дан массив положительных целых чисел values и число goal. Выберите целый порог cap (не меньше нуля) и замените каждый элемент, который больше cap, на cap; остальные элементы не меняются. Найдите порог, при котором сумма получившегося массива ближе всего к goal (по модулю разности). Если подходящих порогов несколько, верните наименьший. Порог не обязан совпадать ни с одним элементом массива.
Пример 1
values=[7, 2, 9], goal=12 → 5

Порог 5 превращает массив в [5, 2, 5] с суммой 12 — ровно goal.

Пример 2
values=[4, 4, 4], goal=10 → 3

Порог 3 даёт сумму 9, порог 4 — сумму 12. Ближе к 10 сумма 9, значит ответ 3.

Пример 3
values=[1, 3, 2], goal=50 → 3

Даже без урезания сумма всего 6. Любой порог от 3 и выше даёт её же, берём наименьший — 3.

Ограничения
  • 1 ≤ len(values) ≤ 10⁴
  • 1 ≤ values[i] ≤ 10⁵
  • 1 ≤ goal ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиТройки с суммой меньше порога СредняяK-е по величине в упорядоченной таблице СредняяБлижайшее следующее окно СредняяТепло в каждый домик СредняяПары с заданной разницей Средняя
загружаем Python…
Вход
values=[7, 2, 9], goal=12
Ожидается
5

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