Sendo impossível adicionar novas anilhas em qualquer um dos lados, a estratégia ideal é a de simplesmente remover a anilha que está na extremidade do lado mais pesado (o lado com maior
) até que os dois lados tenham o mesmo peso. Um cenário que sempre vai acontecer, pois no pior dos casos é necessário remover todas as anilhas e deixar ambos os lados com peso 0. Isso pode ser feito facilmente usando dois pointeiros: guardando a soma total de cada um dos lados, e a soma das anilhas removidas até agora em cada um dos lados. É importante ressaltar que a soma total de um dos lados pode passar do limite de um
de 32 bits, por isso é necessário usar o tipo
no C++.
Editorial Forte Demais
—
por
