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

На скла­де хра­нят­ся ку­би­че­ские кон­тей­не­ры раз­лич­но­го раз­ме­ра. Чтобы со­кра­тить за­ни­ма­е­мое при хра­не­нии место, кон­тей­не­ры вкла­ды­ва­ют друг в друга. Один кон­тей­нер можно вло­жить в дру­гой, если раз­мер сто­ро­ны внеш­не­го кон­тей­не­ра пре­вы­ша­ет раз­мер сто­ро­ны внут­рен­не­го на 5 и более услов­ных еди­ниц. Груп­пу вло­жен­ных друг в друга кон­тей­не­ров на­зы­ва­ют бло­ком. Ко­ли­че­ство кон­тей­не­ров в блоке может быть любым. Каж­дый блок, не­за­ви­си­мо от ко­ли­че­ства и раз­ме­ра вхо­дя­щих в него кон­тей­не­ров, а также каж­дый оди­ноч­ный кон­тей­нер, не вхо­дя­щий в блоки, за­ни­ма­ет при хра­не­нии одну склад­скую ячей­ку.

Зная ко­ли­че­ство кон­тей­не­ров и их раз­ме­ры, опре­де­ли­те ми­ни­маль­ное ко­ли­че­ство ячеек для хра­не­ния всех кон­тей­не­ров и мак­си­маль­но воз­мож­ное ко­ли­че­ство кон­тей­не­ров в одном блоке.

За­да­ние 26

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

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

В от­ве­те за­пи­ши­те два целых числа: сна­ча­ла ми­ни­маль­ное ко­ли­че­ство ячеек для хра­не­ния всех кон­тей­не­ров, затем мак­си­маль­но воз­мож­ное ко­ли­че­ство кон­тей­не­ров в одном блоке.

 

Ответ:

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

Ре­ше­ние.

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

f = open('26.txt')

n = f.readline()

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

cklad=[]

while len(cubes)>0:

block = [cubes.pop(0)]

for i in range(len(cubes)):

if (block[-1]-cubes[i])>=5:

block.append(cubes[i])

cubes[i]=''

cubes=[x for x in cubes if x!='']

cklad.append(block)

print(len(cklad),max(len(c) for c in cklad))

 

Ответ: 17 и 1767.

 

При­ме­ча­ние. Путь к файлу не­об­хо­ди­мо ука­зать со­глас­но рас­по­ло­же­нию файла на Вашем ком­пью­те­ре.

 

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

f = open('26.txt')

n = int(f.readline())

a=[]

for i in f:

a.append(int(i))

f.close()

a.sort()

a=a[::-1]

l={}

maxi=0

n=0

for i in a:

f=0

for j in l:

if l[j][0] >= i+5:

l.update({j: [i, l[j][1]+1]})

maxi=max(l[j][1], maxi)

f=1

break

if f==0:

l.update({n: [i,0]})

n+=1

print(len(l), maxi+1)


Аналоги к заданию № 48447: 48474 Все