Advertisement
Kwwiker

вот это кажется про сжатие файлов

Jan 21st, 2021
860
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.57 KB | None | 0 0
  1. text = open('26-2.txt')
  2. n = int(text.readline())
  3. a = sorted([int(text.readline()) for i in range(n)])
  4. #n = 7
  5. #a = [13, 17, 5, 55, 61, 9, 10]
  6. #a = sorted(a)
  7. arhiv = 0.9*sum(a)
  8. sjatie = 0.8*sum(a)# идея в том, что мы сначала как будто добавляем в архив все сжатые файлы, потом прибавляем 0.2 файла,
  9. # чтобы получить несжатый файл
  10. svobodno = arhiv - sjatie#место в которое можем добавлять 0.2*a[i] и таким образом в архиве будут 0.8*a[i]+0.2a[i]
  11. #то есть целый несжатый файл
  12. i = 0
  13. k = 0.2*a[i]
  14. while svobodno - k >= 0:
  15.     svobodno = svobodno - k
  16.     i+=1#здесь будет храниться максимальное число несжатых файлов
  17.     k = 0.2*a[i]#первый файл, который не помещается в архив не разжатым
  18. svobodno = svobodno+0.2*a[i-1] #определяем сколько места было на 0.2*(последний несжатый файл), берем i-1 потому
  19. # что a[i] уже не помещается и поседний несжатый файл добавленный в архив это a[i-1]
  20. max = 0
  21. for j in range(i-1, len(a)):
  22.     if 0.2*a[j] <= svobodno:# могло быть условие if 0.2*a[j] and a[j]>=max,
  23.         # но второе условие всегда выполняется в отсортированном массиве, поэтому его можно упустить
  24.         max = a[j]
  25. print(i, max)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement