Форум » Массивы, сортировка, работа с файлами » Неверный ответ в 26 - 28. » Ответить

Неверный ответ в 26 - 28.

Merantory: Условие:[more]Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. Системный администратор старается сохранить файлы как можно большего размера. При этом используя выделенную память максимально эффективно – сохраняя файлы меньшего размера, если файлы большего не могут быть сохранены. Входные данные. В первой строке входного файла 26-j3.txt находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 10 000) и N – количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. Запишите в ответе два числа: сначала число сохраненных файлов, затем размер наименьшего сохраненного файла. Пример входного файла: 100 4 70 10 25 3 При таких исходных данных можно сохранить три файла – 70, 25, 3. Поэтому ответ должен содержать два числа – 3 и 3. [/more] Ответ на сайте: 1054 731 Мой ответ: 1054 732 Как я понял, в решении используется лишь 999999 памяти из 1000000. В моем случае я использовал всю память, что условием не ограничено. Моё решение на Python: [more] with open("26-j3.txt") as F: pamyat, users = map(int,F.readline().split()) list_of_all_users = [] #Список с файлами for i in range(users): stroka = F.readline() list_of_all_users.append(int(stroka)) list_of_all_users.sort(reverse = True) summa = 0 #Сумма объема сохраненных нами файлов. minimum = 0 #Минимальный объём файла count = 0 #Счётчик файлов for j in range(users): if pamyat >= summa + list_of_all_users[j]: summa = summa + list_of_all_users[j] minimum = list_of_all_users[j] count += 1 else: summa = summa + list_of_all_users[j] if pamyat >= summa: minimum = list_of_all_users[j] else: summa = summa - list_of_all_users[j] print(count) print(minimum) [/more]

Ответов - 1

Поляков: Спасибо, вы правы. Ответ в этой задаче исправлен.



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