Есть список номеров.
Список должен быть разделен на 2 одинаковых по размеру списка с минимальной разницей в сумме. Суммы должны быть напечатаны.
#Example:
>>>que = [2,3,10,5,8,9,7,3,5,2]
>>>make_teams(que)
27 27
Есть ли ошибка в следующем алгоритме кода для некоторого случая?
Как мне оптимизировать и / или питонизировать это?
def make_teams(que):
que.sort()
if len(que)%2: que.insert(0,0)
t1,t2 = [],[]
while que:
val = (que.pop(), que.pop())
if sum(t1)>sum(t2):
t2.append(val[0])
t1.append(val[1])
else:
t1.append(val[0])
t2.append(val[1])
print min(sum(t1),sum(t2)), max(sum(t1),sum(t2)), "\n"
Вопрос от http://www.codechef.com/problems/TEAMSEL/