|
Отправлено: 14.02.23 15:51. Заголовок: 26_6017
Добрый день. У меня не сходится с предлагаемыми ответами. Мое решение задачи такое: f=open('178.txt') x=[i for i in f] s=x[0].split() n=int(s[0]) m=int(s[1]) x.pop(0) a=[int(i) for i in x] a.sort(reverse = True) count=0 s=0 b=[] while 1: if s+a[0]>m: if (s+a[len(a)-1]>m): count+=1 b.append(s) s=0 else: s+=a[len(a)-1] a.pop(len(a)-1) else: s+=a[0] a.pop(0) if len(a)==0: break print(b) print(count,b[len(b)-2]) Промежуточный ответ: [1420, 1434, 1410, 1315, 1401, 1438, 1469, 1492, 1237, 1253, 1257, 1256, 1264, 1249, 1249, 1268, 1256, 1278, 1288, 1283, 1297, 1308, 1302, 1302, 1325, 1330, 1326, 1320, 1327, 1312, 1316, 1300, 1312, 1483, 1462, 1404, 1315, 1279, 1261, 1198, 1158] Ответ: 41 1198 Проверяла в ехсель - ответы совпали с моими. Задачу выполняла по условию. Сначала отсортировала по убыванию. Затем суммировала грузы сверху, если был перегруз, то добавляла массу снизу, если груз суммировался, то из списка удаляла. Прошу показать ваше решение, или сказать, каков алгоритм действия.
|