Автор | Сообщение |
|
Отправлено: 10.02.21 11:28. Заголовок: Неверный ответ в 26 - 28.
Условие: Скрытый текст Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. Системный администратор старается сохранить файлы как можно большего размера. При этом используя выделенную память максимально эффективно – сохраняя файлы меньшего размера, если файлы большего не могут быть сохранены. Входные данные. В первой строке входного файла 26-j3.txt находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 10 000) и N – количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. Запишите в ответе два числа: сначала число сохраненных файлов, затем размер наименьшего сохраненного файла. Пример входного файла: 100 4 70 10 25 3 При таких исходных данных можно сохранить три файла – 70, 25, 3. Поэтому ответ должен содержать два числа – 3 и 3.
| Ответ на сайте: 1054 731 Мой ответ: 1054 732 Как я понял, в решении используется лишь 999999 памяти из 1000000. В моем случае я использовал всю память, что условием не ограничено. Моё решение на Python: Скрытый текст 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)
|
|
|
|
Новых ответов нет
[см. все]
|
|
|
| Администратор
|
Сообщение: 2480
|
|
Отправлено: 20.02.21 18:55. Заголовок: Спасибо, вы правы. О..
Спасибо, вы правы. Ответ в этой задаче исправлен.
|
|
|