Условие:
Имеется набор данных, состоящий из пар натуральных чисел. Числа из каждой пары распределяются в две группы, так чтобы разность между суммами групп была максимальной и кратной 5. Какую максимальную разность можно получить?
Входные данные. Даны два входных файла (файл A и файл B), каждый из которых содержит в первой строке количество пар N (N ≤ 12000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 500.
Пример входного файла:
5
13 18
18 10
15 8
19 11
7 15
В этом наборе можно сформировать группы: (18+18+15+11+15) = 77 и (13+10+8+19+7) = 57. Разность 77-57=20 будет максимальной, кратной 5. Ответ: 20.
В ответе укажите два числа: сначала искомое значение для файла А, затем для файла B.
Моё решение:
with open("B.txt") as f:
n = int(f.readline())
ss = [list(map(int, x.split())) for x in f]
ma = 0
mi = 0
diff = 0
diffs = []
for i in range(n):
row = ss[i ]
ma += max(row)
mi += min(row)
if diff % 5 == 0:
diffs.append([max(row) - min(row), max(row), min(row)])
diff = diff + (max(row) - min(row))
diffs.sort()
ans = ma - mi
if ans%5 != 0:
j = 0
while ans%5 != 0:
ans -= diffs[j][0]
j += 1
print(ans)
На файл B выводит 1365905, а не 1365890.
Максимальная разность без учёта условия будет 1365906. В файле присутствует пара "355 354", разность которых 1. Если им поменять группы, тогда максимальная разность будет 1365905. Ошибка в моём коде или в самом задании?