Skip to content

Instantly share code, notes, and snippets.

@kupp1
Last active November 11, 2018 19:48
Show Gist options
  • Select an option

  • Save kupp1/d817fa800a3ee77bf45a6a755cff80f1 to your computer and use it in GitHub Desktop.

Select an option

Save kupp1/d817fa800a3ee77bf45a6a755cff80f1 to your computer and use it in GitHub Desktop.
UniLecs #138. Максимальная последовательность по модулю
Задача: есть массив целых чисел. В нем необходимо определить подмножество с максимальным модулем суммы чисел входящих в него.
Входные данные: arr - массив целых чисел, размер массива от 1 до 10^4.
Вывод: подмножество чисел исходного массива, ктр образуют множество с максмимальным модулем суммы. Если есть несколько множеств с одинаковым модулем суммы, то выводите любое.
Пример: [-1, 2, -1, 3, -4]
Answer: { -1, -1, -4 }
def task138(seq: list):
"""
Логично, что сложение чисел разных знаков нам никак не
поможет: модуль от этого только уменьшится.
Разделяем последовтельность на отрицательные и
положительные числа. Смотрим, модуль суммы какой
последовательности больше и выводим эту последовательность.
"""
neg = [n for n in seq if n < 0]
pos = [n for n in seq if n > 0]
if len(neg) == 0 and len(pos) == 0:
return [0]
if abs(sum(neg)) >= sum(pos):
return neg
else:
return pos
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment