В магазине продаётся \(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.\)
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Решение:
Python
from collections import defaultdict
fd = open('26.txt')
N = int(fd.readline())
goods = defaultdict(int) # кол-во оставшегося товара
sold = defaultdict(int) # кол-во проданного товара
prices = {} # цены товаров
total = 0
for line in fd:
art, price, state = map(int, line.split())
goods[art] += state
prices[art] = price
sold[art] += state == 0
total += price
avg = total / N
exp = [(sold[k], prices[k], -goods[k]) for k in prices if prices[k] > avg]
exp.sort(reverse=True)
print(exp[0][0] * exp[0][1], -exp[0][2])
Ответ: \(42588 \,\, 49\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене