Ctrl K

Обмен отрезком между двумя массивами

Сложная
Две производственные линии записывают дневную выработку: first[i] и second[i] — сколько деталей выпустила каждая линия в день i. Массивы одной длины. Разрешается не больше одного раза выбрать отрезок дней [l, r] (0 ≤ l ≤ r < n) и поменять местами записи двух линий на всех этих днях: first[i] и second[i] обмениваются значениями для каждого i от l до r включительно. Можно ничего не менять. После этого считается **итог** — большая из двух сумм sum(first) и sum(second). Верните максимально возможный итог.
Пример 1
first=[5, 9, 2, 8], second=[7, 1, 6, 3] → 28

Меняем местами только позицию 2: first становится [5, 9, 6, 8], сумма 28. Лучше не получится.

Пример 2
first=[4, 4, 4], second=[1, 1, 1] → 12

Любой обмен только уменьшит большую сумму, поэтому ничего не меняем: ответ 12.

Пример 3
first=[1, 10, 1, 10], second=[10, 1, 10, 1] → 31

Обе суммы равны 22. Если перенести в first элемент 10 из позиции 0, получится 31.

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

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