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

На скла­де хра­нят­ся ку­би­че­ские кон­тей­не­ры двух цве­тов раз­лич­но­го раз­ме­ра.

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

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

За­да­ние 26

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

Каж­дая стро­ка вход­но­го файла со­дер­жит на­ту­раль­ное число и букву A или B.

Число обо­зна­ча­ет раз­мер кон­тей­не­ра в услов­ных еди­ни­цах, буква  — цвет этого кон­тей­не­ра (бук­ва­ми A и B услов­но обо­зна­че­ны два цвета).

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

 

Ответ:

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

Ре­ше­ние.

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

f = open('26.txt')

box=[]

cklad =[]

for i in f:

size, color = i.split()

box.append([int(size),color])

box.sort(reverse=True)

while len(box)>0:

block = [box.pop(0)]

for j in range (len(box)):

if block[-1][0]-box[j][0] >= 7 and box[j][1] != block[-1][1]:

block.append(box[j])

box[j]=''

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

cklad.append(block)

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

 

Ответ: 1888&189.


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