Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Тренировки Пробники Статистика Карточки Учебник Об экзамене Учительская
  • Тренажёр заданий ЕГЭ
  • Тренажёр ЕГЭ по Информатике
  • Список заданий №26
  • Задание №26
  • Задание №74457 ЕГЭ Информатике

    Условие задания #74457

    №26 по КИМ

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

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

     

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

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

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

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

    26 (1).txt

    Ответ

    Ответ:

    2326 187

    Решение

    n = 10000
    data = []
    for s in open('26.txt', 'r').readlines():
        size, color = s.strip().split()
        data.append([int(size), 1 if color == 'A' else 2])
    data.sort()
    used = [False] * n
    cnt = 0
    max_in_one = 0
    for i in range(n):
        if used[i]:
            continue
        cnt += 1
        size, color = data[i]
        used[i] = True
        pile_size = 1
        for j in range(i + 1, n):
            if not used[j] and size + 5 <= data[j][0] and 3 - color == data[j][1]:
                used[j] = True
                pile_size += 1
                color = 3 - color
                size = data[j][0]
        max_in_one = max(max_in_one, pile_size)
    print(max_in_one, cnt)

    Понятно ли решение?

    Похожие задания

    15
    Задание №46720Задание №46721Задание №46752Задание №51424Задание №46719Задание №32183Задание №46642Задание №32179Задание №41214Задание №46643Задание №56108Задание №41209Задание №41208Задание №36692Задание №46645
    Бесплатно

    Решай задачи ЕГЭ в приложении

    Скачивай наш Тренажер ЕГЭ на iPhone или Android и тренируйся в любое время и в любом месте!

    Саша — ассистент в телеграмме