Алгоритм решения задания 14. Часть 1
Учимся решать 15 задания первого типа
Читать
Отдел маркетинга сети магазинов составляет рейтинг продуктов по информации об их сроках хранения с момента изготовления и после вскрытия упаковки. Для каждого продукта известен срок его хранения с момента изготовления и срок годности к употреблению после вскрытия упаковки. Продукты пронумерованы начиная с единицы.
В рейтинговом списке маркетологи располагают продукты по следующему алгоритму:
– все 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)
