Тема 26. Обработка целочисленной информации с использованием сортировки

26.06 Распределение объектов по местам (хранение багажа, парковки, кафе, гостиницы)

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка целочисленной информации с использованием сортировки
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#63978

В цветочный магазин привезли А упаковок цветов различных видов. Цветы сортируют по В холодильным камерам, вместимость каждой из которых равна С. Холодильные камеры пронумерованы от 1 до В. Фасовщики заполняют холодильные камеры последовательно, начиная с 1-й. Сначала погружают цветы наибольшего объема, стремясь заполнить текущую холодильную камеру до предела, а оставшееся свободное место начиняют цветами наименьшего объема. Цветы были рассортированы по описанному выше алгоритму, часть цветов могла не влезть.

Необходимо определить номер холодильной камеры, в которую погрузили последний товар, а также остаток свободного в ней места.

Входные данные. В первой строке содержится число А - количество упаковок цветов (натуральное число, не привышающее 6000). Во второй строке содержится число В - количество холодильных камер. В третьей строке содержится число С - вместимость холодильной камеры.В следующих А строках содержаться объемы цветов.

Выходные данные. Два числа через пробел - сначала номер холодильной камеры с последним товаром, затем остаток свободного места в ней.

Вложения к задаче
Показать ответ и решение
f = open(’26_6__1vv35.txt’)
A = int(f.readline()) # Считываем количество упаковок цветов
B = int(f.readline()) # Считываем количество холодильных камер
C = int(f.readline()) # Считываем вместимость холодильных камер
tovar = sorted(list(map(int, f.readlines())))[::-1] # Считываем объемы цветов и сортируем по убыванию

cameras = [C] * B # Создаем B камер по C вместимости каждый
last = 0 # Номер камеры, в которой положили последнюю упаковку

for c in range(len(cameras)): # Проходимся по холодильным камерам
    for t in range(len(tovar)): # Проходимся по упаковкам цветов
        if cameras[c] >= tovar[t]: # Если свободное место позволяет положить текущую упаковку
            cameras[c] -= tovar[t] # То кладем упаковку и записываем оставшееся место в камере
            tovar[t] = 0 # Текущую упаковку обнуляем
            last = c + 1
        else:
            break # Переходим к следующей камере

    for t in range(len(tovar)):
        if cameras[c] >= tovar[len(tovar) - t - 1]: # Проверяем, можем ли дополнить камеру упаковками маленького объема
            cameras[c] -= tovar[len(tovar) - t - 1] # Если да, то перезаписываем оставшееся место
            if tovar[len(tovar) - t - 1] != 0: # Уложенную упаковку обнуляем
                tovar[len(tovar) - t - 1] = 0
                last = c + 1
print(last, cameras[last - 1])

Ответ: 400 61

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!