Задача взята с ресурса foxford.ru
Имеется набор данных, состоящий из троек положительных целых чисел. Необходимо выбрать из каждой тройки ровно одно число так, чтобы сумма всех выбранных чисел делилась на 4 и при этом была максимально возможной.
Входные данные
Первая строка входного файла содержит число N – общее количество троек в наборе. Каждая из следующих N строк содержит три натуральных числа, не превышающих 100 000.
Программа должна обработать два файла.
Решение: (разработано совместно Абросимовым Даниилом)
f=open(r"d:\b.txt","r") #в программе файл расположен в корне диска d
c=int(f.readline())
s=0
a=[10000000,10000000,1000000,10000000]
for i in range(c):
x,y,z=map(int,f.readline().split())
s+=max(x,y,z)
r=min(abs(x-y),abs(x-z),abs(y-z))
o=r%4
if a[o]>r:
a[o]=r
os=s%4
if os==1:
ss=min(a[1],a[3]-a[2])
if ss<0:
ss=a[1]
elif os==2:
ss=min(a[2],a[3]-a[1])
if ss<0:
ss=a[2]
elif os==3:
ss=min(a[3],a[1]+a[2])
print(ss)
if os==0:
print(s)
else:
s=s-ss
print(s)
Ответы:
a-7526892
b-4502345872
Комментариев нет:
Отправить комментарий