Kwwiker

26-2

Dec 20th, 2020
689
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. path5 = '26-2-3.txt'
  2. task_file = open(path5)
  3. n = int(task_file.readline())
  4. # Берём в обратном порядке
  5. a = sorted([int(task_file.readline()) for i in range(n)],reverse = True)
  6. x = sum(a) # Общий объем
  7. target = 0.1*x # Нужно сэкономить
  8. i = 0
  9. while target > 0:
  10.     target -= a[i]*0.2
  11.     i += 1
  12.  
  13. print(n-i) # это количество файлов, которые мы точно можем запихнуть в архив без сжатия - т.е наибольшее их количество
  14.  
  15. common_sum = sum(a[:i+1])*0.8 + sum(a[i+1:]) # это общая сумма всех файлов, которую имеем на данный момент
  16.  
  17. flag = i + 1 # это индекс наибольшего элемента, который мы уже можем не сжимать. то есть он поместится в архив без сжатия (и все файлы которые меньше него)
  18.  
  19. # проверяем: а можно ли сжать a[flag] (то есть элемент поменьше) вместо элемента, который мы сжали ранее и который больше по объему? так идем от наименьшего сжатого элемента до наибольшего, пока общая сумма влезает в архив. в итоге найдем наибольшее число, которое можно не сжимать
  20. while i>0 and (common_sum - a[i]*0.8 + a[i] - a[flag]*0.2) < x*0.9:
  21.   i -= 1
  22.   max_element = a[i]
  23. print(max_element)
  24.  
RAW Paste Data