Algoritmo para dividir uma lista de números em 2 listas de soma igual
Existe uma lista de número
A lista deve ser dividida em 2 listas de tamanhos iguais, com uma diferença mínima na soma. As somas devem ser impressas.
#Example:
>>>que = [2,3,10,5,8,9,7,3,5,2]
>>>make_teams(que)
27 27
Existe algum erro no algoritmo de código a seguir em alguns caso
Como otimizar e / ou pythonize isso?
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"
Question é dehttp: //www.codechef.com/problems/TEAMSEL