Форум » Массивы, сортировка, работа с файлами » Невозможный ответ в задачке 2707 » Ответить

Невозможный ответ в задачке 2707

VectorASD: Мой ответ: 6808 71 Их ответ: 6808 99 Суть в том, что берутся самые большие файлы, что бы максимум был эффект уменьшения общей массы, что уменьшает общее число сжатых файлов. Прикол в том, что если бы в сжатие не входил хотя бы один файл размером в 99, то получилось бы 6807 99. Итог: невозможно в принципе никак получить 6808 хотя бы без одного файла размером в 99, т.к. выходит уже 6807 -_- Программа: [pre2] def Loader5(Name): with open(GPath + Name) as file: N = int(file.readline()) Arr = [int(file.readline()) for i in range(N)] Arr.sort() return N, Arr def Z2707(): N, Arr = Loader5("26-j6.txt") #N, Arr = 7, sorted([13, 17, 5, 55, 61, 9, 10]) Size = sum(Arr) * 0.9 Pos = 0 Sum = sum(Arr) for i in range(0, len(Arr), 25): print(str(i).rjust(5, " "), Arr[i : i + 25]) #тут перебор файлов уже в сортированном виде срезами по 25 штук. while Size < Sum: Pos -= 1 Sum -= Arr[Pos] * 0.2 #New = Arr[Pos] * 0.8 #Sum -= Arr[Pos] - New #Arr[Pos] = New print(len(Arr) + Pos, Arr[Pos - 1]) Z2707() [/pre2]

Ответов - 3

VectorASD: АХАХАХА! Пардон. Проблема проги была в том, что 6807 считалось без файла, размером в 99.

EugeneJobs: VectorASD Ознакомьтесь с разбором по ссылке: Видео-разбор на YouTube Если вопросы останутся, напишите мне в личку, так быстрее будет.

VectorASD: Вот моя идеальная прога по моей задумке :S Вся суть в profit [pre2] def Loader5(Name): with open(GPath + Name) as file: N = int(file.readline()) Arr = [int(file.readline()) for i in range(N)] Arr.sort() return N, Arr def Z2707(): N, Arr = Loader5("26-j6.txt") #N, Arr = 7, sorted([13, 17, 5, 55, 61, 9, 10]) Size = sum(Arr) * 0.9 Pos = 0 Sum = sum(Arr) while Size < Sum: Pos -= 1 Sum -= Arr[Pos] * 0.2 A = len(Arr) + Pos print(A, Arr[Pos - 1]) while Pos < 0: Profit = (Arr[Pos] - Arr[Pos - 1]) * 0.2 #На сколько больше станет архив, если сметить номер последнего файла БЕЗ сжатия #print(Pos, Profit, Sum, Size) if Sum + Profit > Size: break Sum += Profit Pos += 1 print(A, Arr[Pos - 1]) Z2707() [/pre2]




полная версия страницы