Задание 26. Информатика. ЕГЭ. Шастин. 9.2.2025

Просмотры: 279
Изменено: 12 февраля 2025

(Д. Бахтиев) В магазине «Бахтилэнд» на Светлую среду одновременно действуют две акции. Каждый товар характеризуется своей стоимостью и принадлежностью к категории, которая задаётся натуральным числом. Для применения акций товары разделяются по категориям следующим образом:

  • Если номер категории товара чётный, то для товаров этой категории применяется первая акция:
    На \(70\%\) самых дешёвых товаров в данной категории устанавливается скидка \(30\%,\) на оставшиеся товары — скидка \(20%;\)
  • Если номер категории товара нечётный, то для товаров этой категории применяется вторая акция:
    На \(25\%\) самых дорогих товаров в данной категории устанавливается скидка \(15\%,\) на оставшиеся товары — скидки нет.

Магазин «Бахтилэнд» очень лоялен к своим посетителям, поэтому если после применения скидки стоимость получилось нецелой, то она округляется до ближайшего целого числа в меньшую сторону. Но если же количество товаров, на которые должна начислиться скидка, оказалось нецелым, то тут лояльность заканчивается и это количество округляется в меньшую сторону.

При условии, что все товары будут проданы, определите общую выручку магазина, а также абсолютное значение разности между суммой недополученной выручки (то есть суммой скидок, предоставленных покупателям) по первой и второй акциям по сравнению с ситуацией, когда все товары продавались бы по их первоначальной цене.

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

Первая строка входного файла содержит натуральное число \(N\) — количество товаров (\(500 \leqslant N \leqslant 10~000\)). Далее следует \(N\) строк, каждая из которых содержит два натуральных числа:

  • первое число — стоимость товара (натуральное число, не превышающее \(10~000\)),
  • второе число — номер категории товара (натуральное число, не превышающее \(100\)).

Типовой пример организации данных во входном файле

\(7\)
\(80 \, 2\)
\(45 \, 2\)
\(50 \, 1\)
\(40 \, 8\)
\(34 \, 33\)
\(48 \, 7\)
\(100 \, 13\)

При таких исходных данных, при продажи всех товаров по первой акции магазин получит \(123\) рубля, а по второй — \(217\) рублей. Общая выручка — \(340\) рублей. При этом по первой акции недополученной выручкой будет \(42\) рубля \((165 - 123),\) а по второй \(15\) рублей \((232 - 217).\) Разность между недополученной выручкой по первой и второй акциям составила \(|42 - 15| = 27\) рублей. Ответ: \(340 \, 27.\)

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.

Файл с данными

Решение:

Python


base = ''
odd = []
even = []

fd = open(base + '26.txt')
N = int(fd.readline().strip())

for line in fd:
    price, cat = map(int, line.split())
    odd.append(price) if cat % 2 else even.append(price)

odd.sort(reverse=True)
even.sort()

sum_odd = sum(odd)
sum_even = sum(even)

bound_even = int(len(even) * 0.7)
for i in range(len(even)):
    even[i] = int(even[i] * 0.7) if i < bound_even else int(even[i] * 0.8)

for i in range(int(len(odd) * 0.25)):
    odd[i] = int(odd[i] * 0.85)

so = sum(odd)
se = sum(even)
print(so + se, abs((sum_odd - so) - (sum_even - se)))

Ответ: \(4151885 \,\, 465011\)