Задания
Версия для печати и копирования в MS Word
Тип 26 № 81492
i

Ло­ги­сти­че­ская ком­па­ния ис­поль­зу­ет кон­тей­не­ры с мак­си­маль­ной вме­сти­мо­стью M кг. Для от­прав­ки N гру­зов кон­тей­не­ры за­пол­ня­ют гру­за­ми в по­ряд­ке убы­ва­ния веса, пока общая масса гру­зов не пре­вы­сит мак­си­маль­ную вме­сти­мость M. Затем про­це­ду­ру по­вто­ря­ют для сле­ду­ю­ще­го кон­тей­не­ра, пока все грузы не будут раз­ме­ще­ны. Не­об­хо­ди­мо опре­де­лить ко­ли­че­ство кон­тей­не­ров для от­прав­ки всех гру­зов и общую за­груз­ку пред­по­след­не­го кон­тей­не­ра.

Вход­ные дан­ные

За­да­ние 26

Вход­ные дан­ные пред­став­ле­ны в файле сле­ду­ю­щим об­ра­зом. В пер­вой стро­ке за­пи­са­ны два числа  — ко­ли­че­ство гру­зов N и мак­си­маль­ная вме­сти­мость кон­тей­не­ра M. В каж­дой из сле­ду­ю­щих N строк за­пи­са­но по од­но­му на­ту­раль­но­му числу, обо­зна­ча­ю­ще­му вес груза.

При­мер вход­но­го файла

6 100

30

10

40

50

10

20 В пер­вый кон­тей­нер будут по­ме­ще­ны грузы весом 50, 40 и 10 кг (общий вес 100 кг), во вто­рой кон­тей­нер  — грузы весом 30, 20 и 10 кг (общий вес 60 кг). Ответ: 2100.

 

Ответ:

Спрятать решение

Ре­ше­ние.

При­ведём ре­ше­ние на языке Python.

f = open("26_81492.txt")

n, m = map(int, f.readline().split())

boxes = sorted([int(i) for i in f], reverse=True)

count = 0

otv = []

while len(boxes):

count += 1

temp_b = []

temp_w = 0

for box in boxes[:]:

if temp_w + box <= m:

temp_w += box

temp_b.append(box)

boxes.remove(box)

otv.append(temp_b)

print(count, sum(otv[-2]))

В ре­зуль­та­те ра­бо­ты дан­но­го ал­го­рит­ма при вводе дан­ных из файла в усло­вии по­лу­ча­ем ответ  — 4955  995.

 

Ответ: 4955  995.

 

При­ведём ре­ше­ние Юрия Кра­силь­ни­ко­ва на языке Python.

f=open('26_81492.txt')

n,m=map(int,f.readline().split())

a=sorted([int(s) for s in f])

cont=[]

while a:

c=a.pop()

i=len(a)-1

while i >= 0:

if c+a[i] <= m: c+=a.pop(i)

i-=1

cont.append(c)

print(len(cont),cont[-2])

Источник: ЕГЭ по ин­фор­ма­ти­ке 11.06.2025. Ос­нов­ная волна. Даль­ний Во­сток