Задача к ЕГЭ по информатике на тему «Скидки» №2

Магазин предоставляет оптовому покупателю скидку по следующим правилам:
— на каждый второй товар ценой больше 200 рублей предоставляется скидка 30%;
— общая цена покупки со скидкой округляется вверх до целого числа рублей;
— порядок товаров в списке определяет магазин и делает это так, чтобы общая сумма скидки была наименьшей.
Вам необходимо определить общую цену закупки с учётом скидки и цену самого дорогого товара, на который будет предоставлена скидка.

Входные данные. Первая строка входного файла 4.txt содержит число N – общее количество купленных товаров. Каждая из следующих N строк содержит одно целое число – цену товара в рублях. В ответе запишите два целых числа: сначала общую цену покупки с учётом скидки, затем цену самого дорогого товара, на который предоставлена скидка. Пример входного файла
7
225
260
380
95
192
310
60
В данном случае товары с ценой 60, 95, 192 не участвуют в определении скидки, остальные товары магазину выгодно расположить в таком порядке цен: 380, 225, 310, 260. Скидка предоставляется на товары ценой 225 и 260. Суммарная цена этих двух товаров со скидкой составит 339,5 руб., после округления – 340 руб. Общая цена покупки составит: 60 + 95 + 340 + 380 + 192 + 310 = 1377 руб. Самый дорогой товар, на который будет получена скидка, стоит 260 руб. В ответе нужно записать числа 1377 и 260.

Решение 1 ( Excel / LibreOffice):

Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовое значение количества купленных товаров, где оно нам не помешает. Сортируем числа по возрастанию. Перенесем все числа, большие 200 в столбик B  . В столбике C  найдем стоимость товаров после предоставления скидки (только на первую половину товаров, так как именно таким образом мы максимизируем прибыль нашего магазина). Суммируем стоимости товаров до 200 (включительно)(столбик A  ), стоимости товаров со скидкой (столбик C  ) и стоимости товаров больших 200, но без скидки (B411 : B821)  . Округляем полученное число вверх до целого. Найдем товар, который имеет макс. числовое значение и на который предоставляется скидка. Запишем ответ.

Решение 2 (Python):

file = open("4.txt")

n = int(file.readline())
array = [int(file.readline()) for _ in range(n)]
array = sorted(array)

i = 0
summ = 0
max_wd = 0

while array[i] <= 200:
    summ += array[i]
    i += 1

t = (n - i) // 2

while t > 0:
    summ += array[i] * 0.7
    max_wd = array[i]
    i += 1
    t -= 1

if summ + sum(array[i:]) % 1 != 0:
    print(int(summ + sum(array[i:])) + 1, max_wd)
else:
    print(int(summ + sum(array[i:])), max_wd)

Ответ: 464632 602
Оцените статью
Я решу все!