Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- path5 = '26-2-3.txt'
- task_file = open(path5)
- n = int(task_file.readline())
- # Берём в обратном порядке
- a = sorted([int(task_file.readline()) for i in range(n)],reverse = True)
- x = sum(a) # Общий объем
- target = 0.1*x # Нужно сэкономить
- i = 0
- while target > 0:
- target -= a[i]*0.2
- i += 1
- print(n-i) # это количество файлов, которые мы точно можем запихнуть в архив без сжатия - т.е наибольшее их количество
- common_sum = sum(a[:i+1])*0.8 + sum(a[i+1:]) # это общая сумма всех файлов, которую имеем на данный момент
- flag = i + 1 # это индекс наибольшего элемента, который мы уже можем не сжимать. то есть он поместится в архив без сжатия (и все файлы которые меньше него)
- # проверяем: а можно ли сжать a[flag] (то есть элемент поменьше) вместо элемента, который мы сжали ранее и который больше по объему? так идем от наименьшего сжатого элемента до наибольшего, пока общая сумма влезает в архив. в итоге найдем наибольшее число, которое можно не сжимать
- while i>0 and (common_sum - a[i]*0.8 + a[i] - a[flag]*0.2) < x*0.9:
- i -= 1
- max_element = a[i]
- print(max_element)
Advertisement
Add Comment
Please, Sign In to add comment