Тема 26. Обработка целочисленной информации с использованием сортировки

26.01 Архив пользовательских файлов

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка целочисленной информации с использованием сортировки
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 21#30256Максимум баллов за задание: 2

Системный администратор «Школково» раз в месяц создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.

По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также сумму максимального и минимального объемов файлов пользователей в архиве, при условии, что сохранены файлы максимально возможного числа пользователей (при нескольких вариантах одинакового максимального количества пользователей необходимо выбрать максимальную сумму).

Входные данные:

В первой строке входного файла находятся два числа: S  — размер свободного места на диске (натуральное число, не превышающее 10000  ) и N  — количество пользователей (натуральное число, не превышающее 5000  ). В следующих      N  строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 200  ), каждое в отдельной строке.

Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем сумму объемов максимального и минимального файлов пользователей в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Пример входного файла:

160 5

40

80

30

70

50

При таких исходных данных мы можем сохранить максимум 3  пользователей. Это будут пользователи со следующим объемом данных: 80,50 и 30  . Сумма наибольшего и наименьшего будет равна 80+ 30 = 110  . Ответ: 3 110  .

Вложения к задаче
Показать ответ и решение

Решение 1 ( Excel / LibreOffice):

Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Сортируем числа по возрастанию, так как именно таким образом мы добавим в архив максимальное количество. Максимально заполняем наш архив, размер которого равен 6000. Для удобства все файлы, которые можно поместить в архив, перенесем в отдельный столбик, например в B  . Получаем сумму 5980. А вдруг можно получить больше? Проверим это, убрав последний элемент обратно в столбик A  . Теперь сумма размеров выбранных файлов равна 5955. Посмотрим, есть ли среди неиспользованных нами файлов такие, значение которых максимально приближено к числу 45 (6000 - 5955), но не больше него. У нас есть число 45. Значит, переносим его в столбик B  и считаем ответ.

Решение 2 (Python):

file = open("1.txt")
lines = file.readlines()

s, n = map(int, lines[0].split())
array = list(map(int, lines[1:]))
array = sorted(array)

i = 0
current_sum = 0
last_elem = 0
ind_last = 0
users_count = 0

while i < n - 1:
    if current_sum + array[i] <= s:
        current_sum += array[i]
        users_count += 1
        last_elem = array[i]
        ind_last = i
    i += 1

free_space = s - current_sum
t = last_elem + free_space
replacing_last = 0

for i in range(ind_last, n):
    if array[i] <= t:
        replacing_last = array[i]

print(users_count, replacing_last + array[0])

Ответ: 466 46

Ошибка.
Попробуйте повторить позже

Задача 22#30257Максимум баллов за задание: 2

Игорь Владимирович хранит на компьютере картинки и видео различного размера. Он хочет поместить как можно больше картинок и видео на флеш-накопитель, объём которого равен K  Кбайт, причём так, чтобы не менее чем половина его объёма была зарезервирована под видео. Определите максимальное количество файлов (картинок и видео), которое Игорь Владимирович может сохранить на флеш-накопителе, и максимальный объём сохранённого видео. Информационный объём каждой картинки не более 50  Кбайт, объём видео – более 50  Кбайт.

Входные данные:

Входные данные представлены в файле следующим образом. В первой строке записаны два числа: N  — количество всех изображений и видео, K  — объём флеш-накопителя. В следующих N  строках находятся значения объёмов картинок и видео в Кбайтах.

Выходные данные:

Запишите в ответе два числа: сначала общее количество картинок и видео, которые могут быть сохранены, затем — максимально возможный объём сохранённой картинки или видео.

Пример входного файла:

8 150

20

101

15

400

5

900

10

9

Ответ для приведённого примера: 5 20

Вложения к задаче
Показать ответ и решение

Решение 1 ( Excel / LibreOffice):

Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения количества изображений и видео и объема флеш-накопителя, где они нам не помешают. Сортируем числа по возрастанию. В условии нам сказано, что файлы, объем которых меньше либо равен 50 Кбайт, являются изображениями, тогда остальные - видео. Перенесем все видео в другой столбик, например в B  . Не менее половины объема памяти флеш-накопителя ОБЯЗАТЕЛЬНО должны занимать видео, значит, найдем половину всей памяти нашей флешки и возьмем максимальное кол-во видео, чтобы ТОЧНО заполнить это место, перенес их в столбик C  . Оставшееся место заполним изображениями, имеющими минимальный объем. Изображений больше нет, а место осталось, значит, добавляем еще видео (для удобства перенесем их в столбик D  ). Теперь у нас осталось 239 КБ. А вдруг можно получить больше? Проверим это, убрав последний элемент обратно в столбик B  . Теперь сумма размеров выбранных файлов равна 523707. Проверим, нет ли у нас в столбике A  числа, максимально близкого к 581 (524288-523707=581)? У нас есть число 581!!! Значит, переносим его в столбик D  и считаем ответ.

Решение 2 (Python):

file = open("2.txt")
lines = file.readlines()

n, k = map(int, lines[0].split())
array = list(map(int, lines[1:]))
array = sorted(array)

images = 0
videos = 0
i = 0

while array[i] < 50:
    i += 1

while videos + array[i] <= k / 2:
    videos += array[i]
    i += 1

videos += array[i]
max_elem = array[i]

for j in range(len(array)):
    if array[j] <= 50 and images + videos + array[j] <= k:
        images += array[j]

i += 1
free_space = k - (images + videos)

if free_space > max_elem:
    while free_space > 0:
        if free_space - array[i] < 0:
            break
        free_space -= array[i]
        max_elem = array[i]
        i += 1
        if i >= len(array):
            break

                                                                                                     
                                                                                                     
free_space += max_elem

for j in range(len(array) - 1, i - 1, -1):
    print(array[j])
    if array[j] <= free_space:
        max_elem = array[j]
        break

print(i, max_elem)

Ответ: 9263 581

Ошибка.
Попробуйте повторить позже

Задача 23#39242Максимум баллов за задание: 2

Задание выполняется с использованием прилагаемых файлов

Хитрый продавец Алекс Вокятов предоставляет покупателю, делающему большую закупку, скидку по следующим правилам:

  • на каждый второй товар стоимостью больше 240  рублей предоставляется скидка 25%  ;
  • общая стоимость покупки со скидкой округляется вверх до целого числа рублей;
  • порядок товаров в списке определяет продавец и делает это так, чтобы общая сумма скидки была наименьшей.

По известной стоимости каждого товара в покупке необходимо определить общую стоимость покупки с учётом скидки и стоимость самого дорогого товара, на который будет предоставлена скидки

Входные данные

Первая строка входного файла содержит число N  — общее количество купленных товаров. Каждая из последующих N  строк содержит одно целое число — стоимость товара в рублях.

Выходные данные

В ответе запишите два целых числа через пробел: сначала общую стоимость покупки с учётом скидки, затем стоимость самого дорогого товара, на который будет предоставлена скидка.

Вложения к задаче
Показать ответ и решение

Решение 1 ( Excel / LibreOffice):

Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Верхнее число - это кол-во чисел, переносим его отдельно и стоимости товаров поднимаем на ячейку выше.

Сортируем числа по возрастанию.

Находим первое число, большее 240  , т.е. 243  и считаем, сколько осталось чисел. Их осталось 4868  , значит, на    2434  товара будет применена скидка. Так как это должно быть выгодно продавцу, значит, скидка предоставляется на первые, самые дешевые, 2434  товара.

Вставляем формулу в соседние от необходимых нам ячеек: =A5133*0,75. Не забывайте, что кол-во товаров должно быть 2434  .

Далее считаем сумму с помощью формулы =СУММ(A1:A5132;B:B;A7567:A10000) и записываем последнее число, на которое мы применили формулу выше.

Решение 2 (Python)

from math import ceil

file = open(’Задание_26__y22n.txt’)
lines = file.readlines()

n = int(lines[0])
array = list(map(int, lines[1:]))
array = sorted(array)

i = 0
current_sum = 0
last_elem = 0
ind_last = 0
users_count = 0

while array[i] <= 240:
    current_sum += array[i]
    i += 1

t = i + (n - i) // 2 + (n % 2)
ans = current_sum + sum(array[t:]) + sum(array[i:t]) * 0.75

print(ceil(ans), array[t - 1])
# ceil - дает округление числа вверх.

Ответ: 23606668 5152

Ошибка.
Попробуйте повторить позже

Задача 24#50437Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные. В первой строке входного файла 1.txt находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 15 000) и N – количество пользователей (натуральное число, не превышающее 2000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. Запишите в ответе без пробелов два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Пример входного файла:
100 4
80
30
50
40
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов 30 и 40, 30 и 50 или 40 и 50. Наибольший объём файла из перечисленных пар – 50, поэтому ответ для приведённого примера: 2 50

Вложения к задаче
Показать ответ и решение

Размер свободного места на диске - 10750. Сначала переносим столбец с объемами памяти из текстового файла в Excel, а затем сортируем столбец А по возрастанию:

PIC

PIC

Далее, начиная с ячейки А1, начинаем спускать вниз, выделяя диапазон. В это время смотрим как меняется счетчик суммы в правом нижнем углу:

PIC

Получается, что 289 пользователей с самыми маленькими объемами памяти занимают 10712 места. Больше взять не можем, так как у нас ограничение в 10750 памяти.

Теперь нужно найти размер максимального файла. 288 пользователей занимают 10650 памяти, тогда получается, что на еще одного пользователя может приходиться 100 свободного места. Проверяем, есть ли такой объем памяти в файле - да, такой есть. Значит максимальный размер файла 100. Таким образом, ответ - 289100

Ответ: 289100

Ошибка.
Попробуйте повторить позже

Задача 25#50438Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные. В первой строке входного файла 2.txt находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 20 000) и N – количество пользователей (натуральное число, не превышающее 2000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. Запишите в ответе без пробелов два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Пример входного файла:
100 4
80
30
50
40
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов 30 и 40, 30 и 50 или 40 и 50. Наибольший объём файла из перечисленных пар – 50, поэтому ответ для приведённого примера: 2 50  

Вложения к задаче
Показать ответ и решение

Размер свободного места на диске - 16283. Сначала переносим столбец с объемами памяти из текстового файла в Excel, а затем сортируем столбец А по возрастанию:

PIC

PIC

Далее, начиная с ячейки А1, начинаем спускать вниз, выделяя диапазон. В это время смотрим как меняется счетчик суммы в правом нижнем углу:

PIC

Получается, что 1158 пользователей с самыми маленькими объемами памяти занимают 16283 места. Это и есть максимально возможный объем места, тогда максимальный размер файла - 56.

Таким образом, ответ - 1158 56

Ответ: 115856

Ошибка.
Попробуйте повторить позже

Задача 26#55483Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные. В первой строке входного файла 1.txt находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 100000) и N – количество пользователей (натуральное число, не превышающее 10000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. Запишите в ответе без пробелов два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Пример входного файла:
100 4
80
30
50
40
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов 30 и 40, 30 и 50 или 40 и 50. Наибольший объём файла из перечисленных пар – 50, поэтому ответ для приведённого примера: 250

Вложения к задаче
Показать ответ и решение

Открываем Excel, заходим в "Открыть"и выбираем текстовый документ из задачи. В вышедшем окне в первом пункте выбираем формат данных с разделителями. Во втором пункте помимо знака табуляции выбираем пробел. Формат данных столбца общий.

Перетаскиваем числа из первой строки в бок, чтобы не мешались. Пустую первую строку убираем(ПКМ на номер строки — удалить). Выделяем столбец с числами, нажимаем на "Сортировка и фильтр"(раздел "Главная справа), выбираем сортировку по возрастанию.

Выделяем ячейки столбца до тех пор, пока значение суммы не превысит число S. Если у вас не отображается сумма на нижней панели, то её можно включить через контекстное меню, нажав правой кнопкой мыши на нижнюю панель и поставив галочку рядом с соответствующим пунктом. Сумма превышает число S при последнем числе в ячейке A2352, значит, сумма у нас в отрезке A1:A2351, она равна 47698. Свободный объём при этом — 3, последний элемент равен 31. Для того, чтобы подобрать вместо последнего элемента наибольшее возможное число, нужно найти число, ближайшее к 31+3=34. 34 в списке присутствует, значит, максимальный элемент — 34.

Ранее выяснилось, что сумма идет от 1-го до 2351-го элемента, значит, пользователей 2351. Максимальный размер файла, который может быть сохранён в архиве с учётом макс. числа пользователей — 34.

Ответ: 235134

Ошибка.
Попробуйте повторить позже

Задача 27#55484Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. Системный администратор старается сохранить файлы как можно большего размера. При этом используя выделенную память максимально эффективно – сохраняя файлы меньшего размера, если файлы большего не могут быть сохранены.
Входные данные. В первой строке входного файла 2.txt находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 100 000) и N – количество пользователей (натуральное число, не превышающее 10000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. Запишите в ответе два числа без пробелов: сначала число сохраненных файлов, затем размер наименьшего сохраненного файла.
Пример входного файла:
100 4
70
10
25
3
При таких исходных данных можно сохранить три файла – 70, 25, 3. Поэтому ответ должен содержать два числа – 3 и 3.

Вложения к задаче
Показать ответ и решение

Открываем Excel, заходим в "Открыть"и выбираем текстовый документ из задачи. В вышедшем окне в первом пункте выбираем формат данных с разделителями. Во втором пункте помимо знака табуляции выбираем пробел. Формат данных столбца общий.

Перетаскиваем числа из первой строки в бок, чтобы не мешались. Пустую первую строку убираем(ПКМ на номер строки — удалить). Выделяем столбец с числами, нажимаем на "Сортировка и фильтр"(раздел "Главная справа), выбираем сортировку по убыванию.

Выделяем ячейки столбца до тех пор, пока значение суммы не превысит число S. Если у вас не отображается сумма на нижней панели, то её можно включить через контекстное меню, нажав правой кнопкой мыши на нижнюю панель и поставив галочку рядом с соответствующим пунктом. Сумма превышает число S при последнем числе в ячейке A126, значит, сумма у нас в отрезке A1:A125, она равна 11032. Свободный объём при этом — 18, нужно подобрать число, максимально близкое к 18, либо же равное 18. 18 в списке присутствует — добавляем в сумму.

Таким образом, кол-во элементов у нас 126, а минимальное число — 18.

Ответ: 12618

Ошибка.
Попробуйте повторить позже

Задача 28#56345Максимум баллов за задание: 2

Задание выполняется с использованием прилагаемых файлов

Администратор написал скрипт для раскладки N  архивов на K  дисков, каждый объемом V  . Алгоритм скрипта обрабатывает файлы в порядке убывания их размера. Если файл помещается на диск, то следующий по размеру файл стараются поместить на следующий диск. Если не помещается, то на следующий, и так по кругу. Если файл не поместился ни на один диск, то он откладывается в локальную папку. Укажите в ответе два числа: объем всех отложенных файлов и их количество.

Входные данные:

В первой строке входного файла записаны значения V  (объём диска), K  (количество дисков) и N  (количество архивов). Каждая из следующих N  строк содержит одно целое число — размер очередного архива. В ответе запишите два числа — объем всех отложенных файлов и их количество.

Пример входного файла:

20 2 10

15

7

2

3

15

12

19

17

13

6

При таких входных данных ответ будет 70  и 7  : в локальную папку отложены архивы размером 15,15,13,12,7,6  и 2  .

Вложения к задаче
Показать ответ и решение

Решение 1 ( Excel / LibreOffice):

Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения объёма диска, количества дисков и количества архивов куда-нибудь, где они нам не помешают. Сортируем числа по убыванию. Файл, имеющий объём 1000 помещаем на первый диск, второй файл того же размера помещаем на второй. Так чередуем все файлы до тех пор, пока их объём не превысит размер диска. Как только это произошло возвращаем последние элементы обратно и находим максимально возможные размеры файлов, которые мы можем разместить на дисках, для первого это 451, а для второго - 454. Добавляем приближенные к данным значениям числа на диски. Так как у нас всего два диска, которые мы уже заняли файлами по алгоритму из условия, то все оставшиеся пойдут в архивы. Считаем их количество и общую сумму.

Решение 2 (Python):

file = open("26.txt")
V, K, N = map(int, file.readline().split())

array = []
for i in range(N):
    array.append(int(file.readline()))
array.sort(reverse=True)

array_disks = [0] * K
local_folder = []
disk_num = 0
for i in range(N):
    for j in range(disk_num, K):
        if array_disks[j] + array[i] <= V:
            array_disks[j] += array[i]
            if disk_num == (k - 1):
                disk_num = 0
            else:
                disk_num += 1
            break
        if j == (k-1):
            local_folder.append(array[i])
            disk_num = 0
            break
print(sum(local_folder), len(local_folder))

Ответ: 480714 990

Ошибка.
Попробуйте повторить позже

Задача 29#57292Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.

По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

В первой строке входного файла находятся два числа: S — размер свободного места на диске (натуральное число, не превышающее 10 000) и N — количество пользователей (натуральное число, не превышающее 2000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке.

Запишите в ответе два числа без пробелов и разделителей: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Пример входного файла:

100 4

80

30

50

40

При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов 30 и 40, 30 и 50 или 40 и 50. Наибольший объём файла из перечисленных пар — 50, поэтому ответ для приведённого примера:

2 50

Вложения к задаче
Показать ответ и решение

Откроем файл в Excel и удалим первую строчку. Поскольку нам нужно сохранить файлы максимально возможного числа пользователей, то мы отсортируем наши файлы по возрастанию. Таблица будет иметь такой вид:

PIC

Размер свободного места на диске в файле равен 9537 у.е. Выделяя файлы, будем смотреть на их сумму. Выполняем данную операцию пока сумма файлов не станет больше размера свободного места на диске.

Сумма 595-ти файлов равна объёму свободного места на диске. Самый «тяжелый» файл весит 32 у.е. Ответ: 59532.

Ответ: 59532

Ошибка.
Попробуйте повторить позже

Задача 30#57343Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные. В первой строке входного файла 26_4.txt находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 100 000) и N – количество пользователей (натуральное число, не превышающее 20000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке. Запишите в ответе без пробелов два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Пример входного файла:
100 4
80
30
50
40
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов 30 и 40, 30 и 50 или 40 и 50. Наибольший объём файла из перечисленных пар – 50, поэтому ответ для приведённого примера: 2 50  

Вложения к задаче
Показать ответ и решение

Размер свободного места на диске - 38456
1. Сначала переносим столбец с объемами памяти из текстового файла в Exel, а затем сортируем столбец А по возрастанию:
2. Далее, начиная с ячейки А1, начинаем спускать вниз, выделяя диапазон. В это время смотрим как меняется счетчик суммы в правом нижнем углу:
3. Получается, что 2037 пользователей с самыми маленькими объемами памяти занимают 38437 места. Больше взять не можем, так как у нас ограничение в 11456.
4. Теперь нужно найти размер максимального файла. 2036 пользователей занимают 38409 (минус ячейка А2037) памяти, тогда получается, что на еще одного пользователя может приходиться 47 свободного места. Проверяем, есть ли такой объем памяти в файле - да, такой есть. Значит максимальный объем памяти - 47.
Таким образом, ответ - 2037 47

Ответ: 203747

Ошибка.
Попробуйте повторить позже

Задача 31#62841Максимум баллов за задание: 2

Системный администратор "Steam"раз в месяц создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.

По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также сумму максимального и минимального объемов файлов пользователей в архиве, при условии, что сохранены файлы максимально возможного числа пользователей (при нескольких вариантах одинакового максимального количества пользователей необходимо выбрать максимальную сумму).

В первой строке входного файла находятся два числа: S — размер свободного места на диске (натуральное число, не превышающее 10 000) и N — количество пользователей (натуральное число, не превышающее 5000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 200), каждое в отдельной строке.

Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем сумму объемов максимального и минимального файлов пользователей в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Пример входного файла:

160 5

40

80

30

70

50

При таких исходных данных мы можем сохранить максимум 3 пользователей. Это будут пользователи со следующим объемом данных: 80,50 и 30. Сумма наибольшего и наименьшего будет равна 80+30=110. Ответ: 3 110.

Вложения к задаче
Показать ответ и решение
f = open(’26__1va5h.txt’) #открываем файл
data = f.readlines() #считываем строки из файла
s = data[0].split() #разбиваем первую строку на 2 для получения объёма
s = int(s[0])
del (data[0])  #первая строка больше не нужна, удаляем её
for i in range(0, len(data)):
    data[i] = int(data[i])
data = sorted(data) #сортируем наши файлы
summa = 0
for count in range(0, len(data)): #в цикле считаем сумму, пока она меньше чем наш возможный объем
    if summa + data[count] > s:
        break
    summa += data[count]
print(count)
zapas = s - summa
for i in range(0, len(data)): #ищем последний элемент, если можем заменить
    if data[i] - data[count - 1] <= zapas:
        itog = data[i]
print(itog + data[0])

Ответ: 466 46

Ошибка.
Попробуйте повторить позже

Задача 32#63355Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Входные данные. В первой строке входного файла находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 1000000) и N – количество пользователей (натуральное число, не превышающее 10000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке.

Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Вложения к задаче
Показать ответ и решение

Открываем программу Excel и загружаем в неё наш файл.

Сортируем данные столбца А по возрастанию, таким образом, сверху получаем значения наименьшего объема файлов. В ячейку B1  дублируем значение из ячейки A1  , а в ячейку B2  записываем формулу: = B1 + A2  . Растягиваем формулу вниз до конца и ищем в столбце B  значение, близкое к 110000. Оно находится в ячейке B1769  и равно 109978.

Объем свободного для заполнения места будет равен 110000− 109978 = 22  , значит, мы можем заменить последний найденный файл размера 65 на больший файл размера 65+ 22 = 87  , следовательно, он и будет являться максимальным.

Ответ: 1769 87

Ошибка.
Попробуйте повторить позже

Задача 33#63364Максимум баллов за задание: 2

Игорю необходимо перенести файлы с одного компьютера на другой при помощи внешнего жесткого диска.

Объем диска может быть меньше, чем требуется для переноса всех файлов за один раз. Свободный объем на диске и размеры файлов известны. Кроме того, на компьютере есть важные файлы, перенести которые необходимо в первую очередь.

По заданной информации об объеме файлов на компьютере и свободном объеме на диске определите минимальное количество переносов файлов на внешний жесткий диск, за которое удастся перенести все важные файлы, а также максимальное количество неважных файлов, перенесенных за данное количество переносов, при условии, что перенесены все важные файлы.

Входные данные. В первой строке входного файла находятся два числа: S - размер свободного места на диске (натуральное число, не превышающее 100 000) и N - количество файлов, которые надо перенести (натуральное число, не превышающее 10 000). В следующих N строках находятся значения объемов указанных файлов (все числа натуральные, не превышающие 1000) и значимость файла в виде буквы. A - означает, что файл значимый, B что нет. Информация о каждом файле размещена в отдельной строке.

Выходные данные. Запишите в ответе два числа: сначала наименьшее количество переносов файлов, затем максимальное количество перенесенных файлов В, при условии, что перенесены все файлы А.

Вложения к задаче
Показать ответ и решение

Открываем программу Excel и загружаем в неё наш файл. С помощью настраиваемой сортировки, отсортируем сначала файлы по столбцу В (по важности от А до В), а затем по столбцу А по возрастанию. Теперь начнём суммировать размеры файлов важности А. Сделаем это в столбце C  : в ячейку C1  продублируем значение ячейки A1  , в ячейку C2  запишем формулу = C1 +A2  и растянем её вниз. Теперь ищем строку, значение которой примерно равно объему свободного пространства. Последний вмещаемый файл лежит в строке 2062. Это будет первый перенос. Оставшееся место для файлов В равно 753.

Приступим ко второму переносу. Действуем аналогично и считаем объем оставшихся файлов А. Для этого в ячейку C2063  поместим значение ячейки A2063  . Все оставшиеся файлы типа А смогут быть перенесены, поэтому количество переносов равно 2. Оставшееся место для переносов файлов В во втором заходе равно 770096.

Просуммируем значения столбца В и найдём строку, где сумма примерно равна 753, для того, чтобы вместить их в первый перенос. Это будет строка 2292 и таких файлов В - 57. В ячейку C2293  помещаем значение ячейки A2293  и снова считаем объем файлов В. Ищем число, близкое к 770096. Оно стоит в строке 4070 и равно 769816. Значит, количество файлов, вмещаемых во второй перенос равно 1778. Общее количество файлов типа В - 1778+ 57 = 1835  .

Ответ: 2 1835

Ошибка.
Попробуйте повторить позже

Задача 34#63365Максимум баллов за задание: 2

Юля хранит на компьютере картинки и видео, объёмы которых различны. Она хочет сохранить часть из них на флэш-накопитель, объём которого равен M, следующим образом:

1) Сначала она сохраняет самые маленькие видеозаписи до тех пор, пока они не займут не менее чем половину от общей памяти.

2) В оставшееся место Юля сохраняет как можно больше картинок, стремясь занять весь оставшийся объём.

Определите сначала, сколько свободного места останется на флеш-носителе, затем общее количество элементов, которое в итоге удалось поместить.

Входные данные. В первой строке входного файла находятся два числа: N - количество всех изображений и видео, M - объём флеш-накопителя. N, M - натуральные числа, не превышающие   6
10  . В следующих N строках находятся значения объёмов картинок и видео соответственно, эти объёмы указаны в Кбайтах. Каждая картинка весит не более 200 Кбайт, видео - не менее 201 Кбайт. Запишите в ответе два числа: сначала объём оставшегося свободного места, затем общее количество картинок и видео, которые могут быть сохранены.

Вложения к задаче
Показать ответ и решение

Открываем программу Excel и загружаем в неё наш файл. Сортируем столбец А во возрастанию. Начинаем считать общий объем видео файлов. Для этого находим первый файл, объем которого 201 Кбайт, он находится в строке 9106. В ячейку B9106 переносим значение ячейки A9106, в ячейку B9107 записываем формулу: = B9106 +A9107  и растягиваем её вниз. Так как видео файлы заполняют не менее половины всего пространства, то нам необходима сумма, чуть больше 213149. Она находится в строке 9605 и равна 213666. Получаем, что количество видео файлов равно - 500. Количество оставшегося пространства равно - 212632.

Просуммируем картинки аналогично тому, как суммировали видео файлы: в ячейку В1 запишем значение ячейки А1, а в ячейку В2 впишем формулу: = B1 + A2  . И растянем вниз. После добавления предпоследней из помещающихся картинок останется 88 Кбайт. Вместо добавления той, что весит 68 Кбайт, мы можем добавить находящуюся ниже в файле картинку с размером 88 Кбайт - таким образом мы выполним условие на максимальное заполнение. Максимальная сумма, вмещающаяся в лимит, также окажется равна 212632. В неё вмещается 6009 картинок. Значит, общее количество картинок и видео равно 6009 + 500 = 6509  . Объем оставшегося места: 212632− 212632 = 0

Ответ: 0 6509

Ошибка.
Попробуйте повторить позже

Задача 35#63367Максимум баллов за задание: 2

Администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. Администратор отбирает файлы в архив таким образом, что в него будут сохранены файлы наибольшего возможного количества пользователей.

По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимально возможный суммарный объём файлов в архиве, а также количество файлов, которые ни при каких условиях не могут попасть в архив.

Входные данные. В первой строке входного файла находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 10 000) и N – количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке.

Запишите в ответе два числа: сначала максимально возможный суммарный объём файлов в архиве, затем количество файлов, которые ни при каких условиях не могут попасть в архив, при условии, что сохранены файлы максимально возможного числа пользователей.

Вложения к задаче
Показать ответ и решение

Открываем программу Excel и загружаем в неё наш файл. Сортируем столбец А во возрастанию. В столбце В начинаем суммировать значения объемов файлов. Для этого в ячейку B1 помещаем значение ячейки A1, а в ячейку B2 помещаем формулу: = B1 + A2  и растягиваем её вниз. Ищем значение суммы, которое близко к значению 7100. Оно находится в строке 530 и равно 7089.

Однако нам требуется найти максимальный возможный файл. У нас осталось 7100 − 7089 = 11  свободного места. Поэтому, найдём файл, чей объем равен 28+ 11 = 39  . Такого файла нет, поэтому заменим его на тот, чей объем равен 33. Тогда у нас остается 7100 − 7094 = 6  , т.е. ещё 6 единиц свободного простанства. Заменим ещё один файл объема 27 на файл, объема 27+ 6 = 33  . Следовательно, суммарный объем файлов в архиве будет равен 7100.

Больше замен мы сделать не сможем, так как после файла объема 33 сразу же идёт файл объема 40. А для того, чтобы заменять файлы на файл, размера 40, придётся уменьшать количество файлов. Этого делать нельзя. Получается, что файлы, размер которых 40 и более, не смогут попасть в архив. Их количество равно 220.

Ответ: 7100 220

Ошибка.
Попробуйте повторить позже

Задача 36#63542Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов.

Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Входные данные.

В первой строке входного файла находятся два числа: S - размер свободного места на диске (натуральное число, не превышающее 10 000) и N - количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое - в отдельной строке.

Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем — максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Вложения к задаче
Показать ответ и решение

Размер свободного места на диске - 8200

1. Сначала переносим столбец с объемами памяти из текстового файла в Exel, а затем сортируем столбец А по возрастанию:

2. Далее, начиная с ячейки А1, начинаем спускать вниз, выделяя диапазон. В это время смотрим как меняется счетчик суммы в правом нижнем углу:

3. Получается, что 568 пользователей с самыми маленькими объемами памяти занимают 8176 места. Больше взять не можем, так как у нас ограничение в 8200

4. Теперь нужно найти размер максимального файла. 567 пользователей занимают 8147 (минус ячейка А568) памяти, тогда получается, что на еще одного пользователя может приходиться 53 свободного места. Проверяем, есть ли такой объем памяти в файле - нет, такого нет. Тогда ищем следующее максимальное число меньшее 53, это 50. Значит максимальный объем памяти - 50.

Таким образом, ответ - 568 50

Ответ: 568 50

Ошибка.
Попробуйте повторить позже

Задача 37#85882Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов.

Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Входные данные.

В первой строке входного файла находятся два числа: S - размер свободного места на диске (натуральное число, не превышающее 10 000) и N - количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое - в отдельной строке.

Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем — максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Вложения к задаче
Показать ответ и решение

Решение при помощи электронных таблиц:

Размер свободного места на диске - 9251

1. Сначала переносим столбец с объемами памяти из текстового файла в Excel, а затем сортируем столбец А по возрастанию (предварительно убрав значения S и N из первой строки и сместив последовательность с числами на A1).

2. Далее, начиная с ячейки А1, начинаем спускать вниз, выделяя диапазон. В это время смотрим как меняется счетчик суммы в правом нижнем углу.

3. Получается, что 429 пользователей с самыми маленькими объемами памяти занимают 9228 единиц места. Больше взять не можем, так как у нас ограничение в 9251.

4. Теперь нужно найти размер максимального файла. 428 пользователей занимают 9185 (минус ячейка A429) единиц памяти, тогда получается, что на еще одного пользователя может приходиться 66 единиц свободного места. Проверяем, есть ли такой объем памяти в файле - да, такой есть, значит 66 и будет являться максимальным размером сохранённого в массиве файла.

Решение при помощи программы:

f = open(’1_26_18_04.txt’)
s, n = map(int, f.readline().split())
l = [int(i) for i in f]
l.sort()
sm = 0
cnt = 0
mx = 0
for i in range(n):
    if sm + l[i] <= s:
        sm += l[i]
        mx = l[i]
        cnt += 1
    else:
        break

if sm < s:
    sm -= mx
    for j in range(n):
        if sm + l[j] <= s:
            mx = max(mx, l[j])
        else:
            break

print(cnt, mx)

Ответ: 429 66

Ошибка.
Попробуйте повторить позже

Задача 38#85883Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов.

Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный объём диска, который может быть занят в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Входные данные.

В первой строке входного файла находятся два числа: S - размер свободного места на диске (натуральное число, не превышающее 10 000) и N - количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое - в отдельной строке.

Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем — максимальный размер объём диска, который может быть занят в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Вложения к задаче
Показать ответ и решение

Решение при помощи электронных таблиц:

Размер свободного места на диске - 9631

1. Сначала переносим столбец с объемами памяти из текстового файла в Excel, а затем сортируем столбец А по возрастанию (предварительно убрав значения S и N из первой строки и сместив последовательность с числами на A1).

2. Далее, начиная с ячейки А1, начинаем спускать вниз, выделяя диапазон. В это время смотрим как меняется счетчик суммы в правом нижнем углу.

3. Получается, что 312 пользователей с самыми маленькими объемами памяти занимают 9568 единиц места. Больше взять не можем, так как у нас ограничение в 9631.

4. Теперь нужно найти максимальный занимаемый объём. 311 пользователей занимают 9504 (минус ячейка A312) единиц памяти, тогда получается, что на еще одного пользователя может приходиться 127 единиц свободного места. Проверяем, есть ли такой объем памяти в файле - нет, такого нет, максимальный объём в оставшемся файле - 99, значит берем его, и у нас остаётся 28 единиц свободного места.

5. Предпоследний выбранный объём это 64, значит вместо него можем попробовать взять объём на 28 больше. Проверяем, есть ли объём 64 + 28 = 92 в файле - да, есть, значит, взяв его вместо предпоследнего объёма, мы сможем заполнить весь диск - 9631.

Решение при помощи программы:

f = open(’2_26_18_04.txt’)
s, n = map(int, f.readline().split())
l = [int(i) for i in f]
l.sort()
sm = 0
chosen = []
for i in range(n):
    if sm + l[i] <= s:
        sm += l[i]
        chosen.append(l[i])
    else:
        break

for i in range(1, len(chosen)):
    if sm == s:
        break
    mx = chosen[-i]
    sm -= mx
    for j in range(len(chosen), len(l)):
        if sm + l[j] <= s:
            mx = l[j]
        else:
            break
    chosen[-i] = mx
    sm += mx

print(len(chosen), sm)

Ответ: 312 9631

Ошибка.
Попробуйте повторить позже

Задача 39#85884Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов.

Известно, какой объём занимает файл каждого пользователя. В первую очередь сохраняются наибольшие по объёму файлы пользователей. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также размер минимального сохранёного в архиве файла, при условии, что сохранены файлы максимально возможного числа пользователей.

Входные данные.

В первой строке входного файла находятся два числа: S - размер свободного места на диске (натуральное число, не превышающее 10 000) и N - количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое - в отдельной строке.

Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем — объём минимального файла, который может будет сохранён архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Вложения к задаче
Показать ответ и решение

Решение при помощи электронных таблиц:

Размер свободного места на диске - 8414

1. Сначала переносим столбец с объемами памяти из текстового файла в Excel, а затем сортируем столбец А по убыванию (предварительно убрав значения S и N из первой строки и сместив последовательность с числами на A1).

2. Далее, начиная с ячейки А1, начинаем спускать вниз, выделяя диапазон. В это время смотрим как меняется счетчик суммы в правом нижнем углу.

3. Получается, что 87 пользователей с самыми большими объемами памяти занимают 8343 единиц места.

4. Теперь нужно найти следующий файл, который поместится, им оказывается файл объёмом 29, после которого остаётся свободно 42 единиц места. Также можем взять следующий файл объёмом 29, после которого останется 13 единиц места.

5. Первый файл, который поместится в 13 единиц оставшегося места, оказывается файл объёмом 13. Таким образом он является минимальным поместившимся файом, а заняли мы всё место на диске, сохранив 87 + 3 = 90 файлов.

Решение при помощи программы:

f = open(’3_26_18_04.txt’)
s, n = map(int, f.readline().split())
l = [int(i) for i in f]
l.sort(reverse=True)
sm = 0
cnt = 0
mn = 0
for i in range(n):
    if sm + l[i] <= s:
        sm += l[i]
        cnt += 1
        mn = l[i]

print(cnt, mn)

Ответ: 90 13

Ошибка.
Попробуйте повторить позже

Задача 40#87921Максимум баллов за задание: 2

Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов.

Известно, какой объём занимает файл каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Входные данные.

В первой строке входного файла находятся два числа: S - размер свободного места на диске (натуральное число, не превышающее 10 000) и N - количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое - в отдельной строке.

Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем — максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.

Вложения к задаче
Показать ответ и решение

Решение при помощи электронных таблиц:

Размер свободного места на диске - 8514

1. Сначала переносим столбец с объемами памяти из текстового файла в Excel, а затем сортируем столбец А по возрастанию:

2. Далее, начиная с ячейки А1, начинаем спускать вниз, выделяя диапазон. В это время смотрим как меняется счетчик суммы в правом нижнем углу:

3. Получается, что 290 пользователей с самыми маленькими объемами памяти занимают 8478 места. Больше взять не можем, так как у нас ограничение в 8514

4. Теперь нужно найти размер максимального файла. 289 пользователей занимают 8415 (минус ячейка A290) памяти, тогда получается, что на еще одного пользователя может приходиться 99 свободного места. Проверяем, есть ли такой объем памяти в файле - да, такой есть, значит 99 и будет являться максимальным размером сохранённого в массиве файла.

 

Решение при помощи программы:

Нам нужно набрать в первую очередь максимальное количество файлов. Это можно сделать, набирая сначала самые маленькие файлы, потом побольше и так далее, поэтому отсортируем размеры файлов по возрастанию и будем брать файлики, пока они влезают.

Если после этого на диске осталось свободное место, то можно попробовать заменить какой-то из взятых файлов на файл побольше. Выгоднее всего заменять самый большой взятый файл, так как, убрав его, освободиться больше всего места, в которое мы и попробуем положить файл побольше.

# Откроем файл и считаем из него данные
file = open("26_dif_1.txt")
s, n = map(int, file.readline().split())
sizes = [int(i) for i in file]

# Отсортируем размеры файлов по возрастанию
sizes.sort()

# Создаём переменные для:
current_sum = 0  # текущий суммарный вес файлов
count = 0  # количество файлов
max_size = 0  # максимальный размер файла

# Сначала набираем самые маленькие файлы, чтобы максимизировать количетсво
for i in range(n):
    # Берём файл, если он влезает на диск
    if current_sum + sizes[i] <= s:
        # Обновляем текущий суммарный вес
        current_sum += sizes[i]
        # Обновляем максимальный размер
        max_size = sizes[i]
        # Увеличиваем счётчик файлов
        count += 1
    # Если файл не влез, то все следующие тоже не влезут в виду сотрировки
    else:
        break

# Если мы не заполнили весь диск файлами, то можно попробовать найти файл побольше.
if current_sum < s:
    # Будем пробовать заменить самый большой файл, который успели
    # встретить, поэтому вычитаем его размер
    current_sum -= max_size
    # Снова пробегаемся по файлам
    for j in range(n):
        # Если файл влезает, то обновляем максимальный размер
        if current_sum + sizes[j] <= s:
            max_size = max(max_size, sizes[j])
        # Если файл не влез, то следующие не влезут в силу сортировки
        else:
            break

# Выводим ответ
                                                                                                  
                                                                                                  
print(count, max)

Ответ: 290 99
Рулетка
Вы можете получить скидку в рулетке!