EGEsoll - сборник решений задач из ЕГЭ

Задача 7 досрок лидер продаж

В магазине продаётся N товаров нескольких артикулов. Товары одного артикула имеют одинаковую цену. Учёт товаров ведётся поштучно, для каждой единицы товара известен её текущий статус (продана или нет). Товары разделены на две категории: дорогие и дешёвые. Дорогими считаются товары, цена на которые превышает среднюю цену (среднее арифметическое) всех товаров в базе данных магазина без учёта их текущего статуса, остальные товары считаются дешёвыми.

Лидером продаж называется товар с таким артикулом, наибольшее количество единиц которого продано. Лидер продаж выбирается среди дорогих товаров, а если продано одинаковое количество дорогих товаров с разными артикулами, лидером выбирается товар с наибольшей ценой. Если и таких товаров несколько, лидер продаж — тот из них, которого осталось меньше всего.

Найдите суммарную выручку магазина от реализации товара — лидера продаж, а также оставшееся количество товара этого артикула.

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

В первой строке входного файла находится число N — количество товаров в базе данных магазина (натуральное число, не превышающее 10 000). В каждой из следующих N строк находится три числа, разделённых пробелом: артикул товара (натуральное число, не превышающее 100 000), его цена (натуральное число, не превышающее 10 000) и статус (0, если товар уже продан, и 1, если ещё не продан).

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

Два числа: сумма выручки от реализации товара — лидера продаж, а также количество товара этого артикула, оставшееся в наличии.

Типовой пример организации данных во входном файле
8
10 100 1
3 10 0
10 100 0
2 10 1
10 100 0
3 10 1
11 100 0
1 200 0

При таких исходных данных дорогими являются товары стоимостью 100 и 200 рублей. Больше всего было продано товара вида 10. В продаже остался один такой товар. Условию задачи удовлетворяет ответ 200 1.

Досрочный вариант 2026 - КЕГЭ

Download File 1

Добавлено: 20.04.26 20:39

Перейти к решению

Решение

Решение на Python:

f = open("embed.txt")
_ = f.readline()

# Прочитаем файл
# a[0] - артикуль, a[1] - цена, a[2] - статус
a = [list(map(int, line.split())) for line in f.readlines()]
# начнём искать среднее арифметическое цены
sred = 0
for el in a:
    sred += el[1]
sred //= len(a)

# Составим такой тип данных, который поможет нам решить задачу
# Это будет словарь с дорогими товарами, ключом которого является артикуль.
# Его значение - список, первый индекс - кол-во проданных, второй - кол-во в наличии, третий - цена
# dict[int, list[1, 2, 3]]
lideri = {}
for el in a:
    if el[1] > sred:
        if el[2] == 1:
            if el[0] in lideri.keys():
                lideri[el[0]][1] += 1
            else:
                lideri[el[0]] = [0, 1, el[1]]
        else:
            if el[0] in lideri.keys():
                lideri[el[0]][0] += 1
            else:
                lideri[el[0]] = [1, 0, el[1]]
# Отстортируем получившиеся данные и проанализируем их
# Заметим, что первые три товара релизовались одинаково,
# но у третьего - меньше стоимость. Мы его не рассматриваем.
# Первый и второй отличаются по количеству остатка в магазине.
# Нам нужно выбрать тот, кого осталось меньше.
print(sorted(lideri.values(), reverse=True)[:5])
# Считаем 51*856=43656
# Остаток в магазине: 36
# Ответ: 43656 36

Ответ: 43656 36

Автор - rubygem17

Объяснение

None

Назад