ЕГЭ, ОГЭ, программирование и робототехника в Калининграде

№ 26022. Демоверсия

Отдел маркетинга сети магазинов составляет рейтинг продуктов по информации об их сроках хранения с момента изготовления и после вскрытия упаковки. Для каждого продукта известен срок его хранения с момента изготовления и срок годности к употреблению после вскрытия упаковки. Продукты пронумерованы начиная с единицы.

В рейтинговом списке маркетологи располагают продукты по следующему алгоритму:
 – все 2N чисел, обозначающих срок хранения и срок годности к употреблению для N продуктов, упорядочивают по возрастанию;
 – если минимальное число в этом упорядоченном списке – срок хранения, то продукт в рейтинге занимает первое свободное место от
его начала;
 – если минимальное число – срок годности к употреблению, то продукт занимает первое свободное место от конца рейтинга;
 – если число обозначает срок хранения или срок годности к употреблению уже рассмотренного продукта, то его не принимают во внимание.
Этот алгоритм применяется последовательно для размещения всех N продуктов.
Определите номер последнего продукта, для которого будет определено его место в рейтинге, и количество продуктов, которые займут в рейтинге более низкие места.

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

В первой строке входного файла находится натуральное число N (N ≤ 1000) – количество продуктов. Следующие N строк содержат пары
чисел, обозначающих соответственно срок хранения продукта с момента изготовления и срок годности к употреблению после вскрытия упаковки (все числа натуральные, различные).
Запишите в ответе два натуральных числа: сначала номер последнего продукта, для которого будет определено его место в рейтинге, затем – количество продуктов, которые займут в рейтинге более низкие места.

data = []
with open('2622.txt') as file:
    next(file)
    id = 1
    for line in file:
        parts = line.strip().split()
        best_before = int(parts[0])  # хранение
        exp_date = int(parts[1])  # срок годности
        min_of_dates = min(best_before, exp_date)

        if min_of_dates == best_before:
            type = "Хранение"
        else:
            type = "Годность"

        good = {
            "Срок хранения"    : best_before,
            "Срок годности"    : exp_date,
            "Минимальное число": min(int(parts[0]), int(parts[1])),
            "Тип"              : type,
            "Порядковый номер" : id
        }
        data.append(good)
        id += 1

data = sorted(data, key=lambda x: x["Минимальное число"])

goods_after = sum(1 for detail in data[:-1] if detail["Тип"] == "Годность")

print(data[-1]["Порядковый номер"], goods_after)
Разберём это задание на бесплатном пробном занятии

Преподаватель покажет, как решать такие задачи, и подскажет, с чего начать подготовку. Группы до 8 человек, очно в Калининграде и онлайн.

Записаться на пробное занятие