Задача с сайта https://kpolyakov.spb.ru/
Магазин предоставляет оптовому покупателю скидку по следующим правилам:
– на каждый второй товар ценой больше 100 рублей предоставляется скидка 10%;
– общая цена покупки со скидкой округляется вверх до целого числа рублей;
– порядок товаров в списке определяет магазин и делает это так, чтобы общая сумма скидки была наименьшей.
Вам необходимо определить общую цену закупки с учётом скидки и цену самого дорогого товара, на который будет предоставлена скидка.
Входные данные. Первая строка входного файла 26-s1.txt содержит число – общее количество купленных товаров. Каждая из следующих
строк содержит одно целое число – цену товара в рублях. В ответе запишите два целых числа: сначала общую цену покупки с учётом скидки, затем цену самого дорогого товара, на который предоставлена скидка.
Пример входного файла
7
225
160
380
95
192
310
60
В данном случае товары с ценой 60 и 95 не участвуют в определении скидки, остальные товары магазину выгодно расположить в таком порядке цен: 380, 160, 225, 192, 310. Скидка предоставляется на товары ценой 160 и 192. Суммарная цена этих двух товаров со скидкой составит 316,8 руб., после округления – 317 руб. Общая цена покупки составит: руб. Самый дорогой товар, на который будет получена скидка, стоит 192 руб. В ответе нужно записать числа 1387 и 192.
f= open(’26-s1.txt’) # Открываем файл
n = int(f.readline()) # Kоличество купленных товаров
# Сортировка всех цен по возрастанию
sales = sorted([int(i) for i in f])
# Товары дешевле 100р. (без скидки)
not_sales = [i for i in sales if i <= 100]
# Остальные товары, дороже 100р.
sales = sales[len(not_sales):]
# Товары, на которые будет действовать скидка
sales100 = sales[:len(sales) // 2]
# Tовары, дороже 100р. (без скидки)
sales = sales[len(sales) // 2:]
# Сумма всех товаров
print(sum(sales+not_sales) + sum(sales100)*0.9)
# Самый дорогой товар, на который предоставлена скидка
print(sales100[-1])