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

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

Задача 1#56345

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

Администратор написал скрипт для раскладки 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

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

Задача 2#30256

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

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

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

В первой строке входного файла находятся два числа: 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. Посмотрим, есть ли среди неиспользованных нами файлов такие, значение которых максимально приближено к числу 46 (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

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

Задача 3#28229

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

Администратор написал скрипт для раскладки 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 помещаем на первый диск, второй файл того же размера помещаем на второй. Так чередуем все файлы до тех пор, пока их объём не превысит размер диска. Как только это произошло возвращаем последние элементы обратно и находим максимально возможные размеры файлов, которые мы можем разместить на дисках, для первого это 811, а для второго - 816. Добавляем приближенные к данным значениям числа на диски. Так как у нас всего два диска, которые мы уже заняли файлами по алгоритму из условия, то все оставшиеся пойдут в архивы. Считаем их количество и общую сумму.

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

file = open("task 3.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, disk_num + K):
        if array_disks[j % K] + array[i] <= V:
            array_disks[j % K] += array[i]
            disk_num = j + 1
            break
    else:
        local_folder.append(array[i])

print(sum(local_folder), len(local_folder))

Ответ: 388664 792

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

Задача 4#28227

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

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

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

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

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

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

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

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

100 4

80

30

50

40

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

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

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

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

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

file = open("task 1.txt")
S, N = map(int, file.readline().split())

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

result = []
while sum(result) + array[0] <= S:
    result.append(array.pop(0))

for i in range(len(array)):
    if sum(result) - result[-1] + array[i] <= S:
        result[-1], array[i] = array[i], result[-1]

print(len(result), result[-1])

Ответ: 2610 51

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

Задача 5#26961

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

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

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

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

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

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

100 4

80

30

10

5

При таких входных данных, ответ будет: 3 10

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Всего чисел у нас 1000  .

Отсортируем числа в изначальном столбце по возрастанию. Далее распределим на 2  колонки таким способом:

1  колонку строчки от 1  до 500  оставляем на месте, а 501  и до 1000  копируем и вставляем в столбец B.

Далее столбец B сортируем по убыванию.

PIC

Весь объем у нас диска составляет 100000  . Поэтому выделяем ячейки до той степени, пока минимально не превысим это число.

PIC

Мы остановились на 287  строке и сумма будет 100092  . Но если не брать самый маленький файл - 120  , то 100092− 120 < 100000  . Значит мы возьмем последний файл 229  и всего файлов, которые мы возьмем, будет 573  .

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

file = open("Задание_26.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
min_files = array[:n // 2 + (n % 2)]  # массив, содержащий первые n//2 + (n % 2) элементов
max_files = array[n // 2 + (n % 2):][::-1]  # массив, содержащий максимальные n//2 элементов
                                            # от максимального (n) к минимальному (n // 2 + (n % 2))
flag = True # флаг позволит нам не посчитать подряд два минимальных файла, такая ситуация может
            # возникнуть в конце, когда место в архиве еще есть, мы положим в него маленький
            # файлик, и останется еще место, в которое уже невозможно положить минимальный из
            # максимальных, но маленький файлик еще положить можно, но по условию нам так
            # делать нельзя

while i != n // 2 + n % 2:
    if current_sum + min_files[i] <= s and flag:
        current_sum += min_files[i]
        users_count += 1
        last_elem = array[i]
        ind_last = i
        flag = False
    if i != len(max_files) and current_sum + max_files[i] <= s and flag == False:
        current_sum += max_files[i]
        users_count += 1
        last_elem = array[i]
        ind_last = i
        flag = True
    i += 1

if flag == False and ind_last != len(max_files) and \
        current_sum - last_elem + max_files[ind_last] <= s:
                                                                                                     
                                                                                                     
    last_elem = max_files[ind_last]

print(users_count, last_elem)

Ответ: 573 229

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

Задача 6#26213

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

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

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

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

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

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

Пример входных данных:

200 4

90

10

70

50

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

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Копируем данные из блокнота и вставляем в редактор, первая строка вставилась слитно, её нужно разделить вручную. Пользовательские файлы нужно отсортировать по возрастанию, чтобы набрать наибольшее количество файлов (жмём на число, с которого начинаются размеры файлов → Сортировка и фильтр → Сортировка по возрастанию). Когда файлы отсортированы, начинаем набирать сумму, пока она меньше, чем максимальный размер файлов. Зажимаем на 1 ячейке столбца с размерами файлов и начинаем тянуть вниз, справа снизу будет написана сумма и количество элементов. Максимальная сумма, которую мы можем собрать, чтобы не превысить максимальную сумму файлов, - это 8424. Однако, мы можем максимально набрать 8428, а набрали 8424, значит, последний файл размером 22 мы можем выкинуть и взять файл, который займет больше места, но общая сумма не превысит максимальный размер. Запоминаем сумму 8402 и количество 760 (выкинули файл размером 22), вместо файла размером 22 берем файл размером 26 (убеждаемся сначала, что он есть в файле). Выходит, что максимальное количество - 761, максимальный размер - 26.

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

file = open("Задание 26.txt", "r", encoding="UTF-8")
lines = file.readlines()

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

users_count = 0
maximum_file = 0
current_summ = 0
i = 0
while i < n:
    if current_summ + array[i] > s:
        break
    current_summ += array[i]
    i += 1

users_count = i
current_summ -= array[i - 1]

while i < n:
    if current_summ + array[i] > s:
        break
    i += 1
current_summ += array[i - 1]
maximum_file = array[i - 1]

print(users_count, maximum_file)

Ответ: 761 26

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

Задача 7#26078

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

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

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

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

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

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

Пример входных данных:

650 4

330

107

220

231

При таких исходных данных можно сохранить файлы максимум трёх пользователей. Объёмы этих трёх файлов 107  , 220  и 231  . Оставшееся место на диске: 650− 558 = 92  , поэтому ответ для приведённого примера: 3 92  .

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

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

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

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

file = open("Задание_26__gmt6.txt", encoding="UTF-8")
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]

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

print(users_count, free_space)

Ответ: 1921 0

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

Задача 8#25972

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

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

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

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

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

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

Пример входных данных:

200 4

90

30

100

80

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

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

Решение 1 (Excel / LibreOffice):
Копируем данные из блокнота и вставляем в редактор, первая строка вставилась слитно, её нужно разделить вручную. Пользовательские файлы нужно отсортировать по возрастанию, чтобы набрать наибольшее количество файлов (жмём на число, с которого начинаются размеры файлов → Сортировка и фильтр → Сортировка по возрастанию). Когда файлы отсортированы, начинаем набирать сумму, пока она меньше, чем максимальный размер файлов. Зажимаем на 1 ячейке столбца с размерами файлов и начинаем тянуть вниз, справа снизу будет написана сумма и количество элементов. Максимальная сумма, которую мы можем собрать, чтобы не превысить максимальную сумму файлов, - это 3864. Однако, мы можем максимально набрать 3875, а набрали 3864, значит, последний файл размером 14 мы можем выкинуть и взять файл, который займет больше места, но общая сумма не превысит максимальный размер. Запоминаем сумму 3850 и количество 506 (выкинули файл размером 14), вместо файла размером 14 берем файл размером 24 (нет файла размером 25, поэтому берем ближайший меньший). Выходит, что максимальное количество - 507, максимальный размер - 24.

Решение 2 (Python)

file = open("Задание_26__fpx7.txt", "r", encoding="UTF-8")
lines = file.readlines()

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

users_count = 0
maximum_file = 0
current_summ = 0
i = 0
while i < n:
    if current_summ + array[i] > s:
        break
    current_summ += array[i]
    i += 1

users_count = i
current_summ -= array[i - 1]

while i < n:
    if current_summ + array[i] > s:
        break
    i += 1
current_summ += array[i - 1]
maximum_file = array[i - 1]

print(users_count, maximum_file)

Ответ: 507 24

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

Задача 9#25945

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

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

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

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

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

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

Пример входных данных:

220 4

90

43

140

77

При таких исходных данных можно сохранить файлы максимум трёх пользователей. Объёмы этих трёх файлов 90, 43 и 77. Наибольший объём файла — 140, поэтому ответ для приведённого примера: 3 140.

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Копируем данные из блокнота и вставляем в редактор, первая строка вставилась слитно, её нужно разделить вручную. Пользовательские файлы нужно отсортировать по возрастанию, чтобы набрать максимальное количество файлов (жмём на число, с которого начинаются размеры файлов → Сортировка и фильтр → Сортировка по возрастанию). Когда файлы отсортированы, начинаем набирать сумму, пока она меньше, чем максимальный размер файлов. Зажимаем на 1 ячейке столбца с размерами файлов и начинаем тянуть вниз, справа снизу будет написана сумма и количество элементов. Максимальная сумма, которую мы можем собрать, чтобы не превысить максимальную сумму файлов, - это 8244. Значит, считаем количество набранных - 495. Нас просят максимальный размер файла, влезающего в архив, без условий, просто берем максимальный файл, если он влезает, он будет ответом.

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

file = open("Задание_26__f6we.txt", "r", encoding="UTF-8")
lines = file.readlines()

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

users_count = 0
current_summ = 0
i = 0
while i < n:
    if current_summ + array[i] > s:
        break
    current_summ += array[i]
    i += 1

users_count = i
current_summ -= array[i - 1]

while i < n:
    if current_summ + array[i] > s:
        break
    i += 1
current_summ += array[i - 1]

for i in range(len(array)):
    if array[i] < s:
        maximum_file = array[i]
print(users_count, maximum_file)

Ответ: 495 296

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

Задача 10#25918

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

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

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

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

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

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

Пример входных данных:

400 4

150

90

110

190

При таких исходных данных можно сохранить файлы минимум трёх пользователей. Объёмы этих трёх файлов 90, 110 и 190. Наибольший объём файла — 190, поэтому ответ для приведённого примера: 3 190.

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва крабоедов куда-нибудь, где они нам не помешают. Сортируем числа по убыванию, так как именно таким образом мы добавим в архив минимальное количество. Максимально заполняем наш архив, размер которого равен 3875. Для удобства все файлы, которые можно поместить в архив, перенесем в отдельный столбик, например в B  . Получаем сумму 3000. Посмотрим, есть ли среди неиспользованных нами файлов такие, значение которых максимально приближено к числу 875 (3875 - 3000), но не больше него. Максимальное число, которое мы можем положить в архив - 875. Значит, переносим его в столбик B  и считаем ответ.

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

f = open(’Zadanie_26_ejg4.txt’)
s, n = map(int, f.readline().split())
users = []
for i in range(n):
    users.append(int(f.readline()))
users.sort(reverse=True)
summ = 0
counter = 0
for i in range(n):
    if summ + users[i] <= s:
        summ += users[i]
        counter += 1
print(counter, users[0])

Ответ: 4 1000

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

Задача 11#25786

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

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

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

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

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

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

Пример входных данных:

200 4

90

30

100

80

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

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Первые два числа (S  и N  ) вставим правее в ячейки С1 и D1, чтобы было удобнее. Отфильтруем столбец А по возрастанию. С помощью кнопок shift + вниз из ячейки А1 будем двигаться вниз, пока сумма в правом нижнем углу будет меньше 9999  . Получим, что наибольшее число пользователей, чьи файлы могут быть помещены в архив, равно 762  . Для удобства переместим всех 762  пользователей в столбец В. Теперь вычислим, сколько свободного места осталось на диске. Для этого в ячейку D762 запишем формулу =C1-СУММ(B1:B3236). Получим, что оставшееся место на диске равно 13  . Текущий максимальный размер файла, который поместится в архив, равен числу в ячейке В762, это 24  . Тогда максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей, равен 24 +13  , то есть 37  . Проверяем, действительно, в ячейке А1195 есть число 37  . Переместим его в столбец В, а число, записанное в ячейке В762, переместим обратно в столбец А. Теперь разница в ячейке D762 между максимальной суммой и суммой выбранных чисел равна 0  , значит, никакое число больше 37  взять не получится.

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

file = open("Задание_26__d0r7.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)

Ответ: 762 37

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

Задача 12#24622

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

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

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

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

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

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

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

1004

80

30

50

40

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

5248

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва крабоедов куда-нибудь, где они нам не помешают. Сортируем числа по возрастанию, так как именно таким образом мы добавим в архив максимальное количество. Максимально заполняем наш архив, размер которого равен 8200. Для удобства все файлы, которые можно поместить в архив, перенесем в отдельный столбик, например в B  . Получаем сумму 8176. А вдруг можно получить больше? Проверим это, убрав последний элемент обратно в столбик A  . Теперь сумма размеров выбранных файлов равна 8147. Посмотрим, есть ли среди неиспользованных нами файлов такие, значение которых максимально приближено к числу 53 (8200 - 8147), но не больше него. Максимальное число, которое мы можем положить в архив - 50. Значит, переносим его в столбик B  и считаем ответ.

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

file = open("Задание_26-3__mpyr.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, abs(users_count - replacing_last))

Ответ: 618 518

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

Задача 13#24621

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

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

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

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

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

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

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

1605

40

80

30

70

50

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

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

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

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

file = open("Задание_26-2__mpyq.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

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

Задача 14#24620

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

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

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

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

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

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

104

8

3

5

4

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

25

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

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

Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения свободного места на диске и кол-ва марафонцев куда-нибудь, где они нам не помешают. Сортируем числа по возрастанию, так как именно таким образом мы разместим на лиске максимальное количество. Максимально заполняем наш диск, размер которого равен 8358. Для удобства все файлы, которые можно поместить в архив, перенесем в отдельный столбик, например в B  . Получаем сумму 8358, она равна свободному месту на диске. Значит, мы заполнили его полностью. Можно считать ответ.

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

file = open("Задание_26-1__mpys.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)

Ответ: 611 27

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

Задача 15#18214

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

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

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

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

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

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Копируем данные из блокнота и вставляем в редактор, первая строка вставилась слитно, её нужно разделить вручную. Пользовательские файлы нужно отсортировать по возрастанию, чтобы набрать наибольшее количество файлов (жмём на число, с которого начинаются размеры файлов → Сортировка и фильтр → Сортировка по убыванию). Когда файлы отсортированы, начинаем набирать сумму, пока она меньше (зажимаем на первую ячейку столбца размером файлов и начинаем тянуть вниз, справа снизу будет написана сумма и количество), чем максимальный размер всех файлов. Максимальная сумма, которую мы можем набрать, набирая подряд идущие файлы - это 8443, запоминаем эту сумму и количество. Однако, дисковое пространство занято не максимально, так что мы можем взять еще файл размером 17 (8460 - 8443), чтобы занять пространство. Убеждаемся, что файл размером 17 существует. Получается, минимальное количество = количество при сумме 8443 + 1 = 85 + 1. Минимальный файл = 17.

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

file = open("5.txt", "r", encoding="UTF-8")
lines = file.readlines()

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

users_count = 0
minimum_file = 0
current_summ = 0
i = 0
while i < n:
    if current_summ + array[i] <= s:
        current_summ += array[i]
        minimum_file = array[i]
        users_count += 1
    i += 1

print(users_count, minimum_file)

Ответ: 86 17

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

Задача 16#18213

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

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

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

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

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

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Пользовательские файлы нужно отсортировать по возрастанию, чтобы набрать наибольшее количество файлов (жмём на число, с которого начинаются размеры файлой → Сортировка и фильтр → Сортировка по убыванию). Когда файлы отсортированы, начинаем набирать сумму, пока она меньше (зажимаем на первую ячейку столбца размером файлов и начинаем тянуть вниз, справа снизу будет написана сумма и количество), чем максимальный размер всех файлов. Максимальная сумма, которую мы можем набрать, набирая подряд идущие файлы - это 8443, запоминаем эту сумму и количество. Однако, дисковое пространство занято не максимально, так что мы можем взять еще файл размером 17 (8460 - 8443), чтобы занять пространство. Убеждаемся, что файл размером 17 существует. Получается, минимальное количество = количество при сумме 8443 + 1 = 85 + 1. Максимальный файл = 100.

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

file = open("4.txt", "r", encoding="UTF-8")
lines = file.readlines()

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

users_count = 0
maximum_file = 0
current_summ = 0
i = 0
while i < n:
    if current_summ + array[i] <= s:
        current_summ += array[i]
        users_count += 1
    i += 1

maximum_file = array[0]

print(users_count, maximum_file)

Ответ: 86 100

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

Задача 17#18212

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

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

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

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

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

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Пользовательские файлы нужно отсортировать по возрастанию, чтобы набрать наибольшее количество файлов (жмём на число, с которого начинаются размеры файлой → Сортировка и фильтр → Сортировка по возрастанию). Когда файлы отсортированы, начинаем набирать сумму, пока она меньше, чем максимальный размер файлов. Зажимаем на 1 ячейке столбца с размерами файлов и начинаем тянуть вниз, справа снизу будет написана сумма и количество элементов. Максимальная сумма, которую мы можем собрать, чтобы не превысить максимальную сумму файлов, - это 8446. Однако, мы можем максимально набрать 8460, а набрали 8446, значит, последний файл размером 21 мы можем выкинуть и взять файл, который займет больше места, но сумма не превысит максимальный размер. Запоминаем сумму 8425 и количество 812 (выкинули файл размером 21), вместо файла размером 21 берем файл размером 35 (убеждаемся сначала, что он есть в файле). Выходит, что максимальное количество - 813, максимальный размер - 35.

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

file = open("3.txt", "r", encoding="UTF-8")
lines = file.readlines()

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

users_count = 0
maximum_file = 0
current_summ = 0
i = 0
while i < n:
    if current_summ + array[i] > s:
        break
    current_summ += array[i]
    i += 1

users_count = i
current_summ -= array[i - 1]

while i < n:
    if current_summ + array[i] > s:
        break
    i += 1
current_summ += array[i - 1]
maximum_file = array[i - 1]

print(users_count, maximum_file)

Ответ: 813 35

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

Задача 18#18211

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

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

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

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

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

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Пользовательские файлы нужно отсортировать по возрастанию, чтобы набрать максимальное количество файлов (жмём на число, с которого начинаются размеры файлов → Сортировка и фильтр → Сортировка по возрастанию). Когда файлы отсортированы, начинаем набирать сумму, пока она меньше, чем максимальный размер файлов. Зажимаем на 1 ячейке столбца с размерами файлов и начинаем тянуть вниз, справа снизу будет написана сумма и количество элементов. Максимальная сумма, которую мы можем собрать, чтобы не превысить максимальную сумму файлов, - это 1403. Однако, мы можем максимально набрать 1405, а набрали 1403, значит, последний файл размером 7 мы можем выкинуть и взять файл, который займет больше места, но общая сумма не превысит максимальный размер. Запоминаем сумму 1396 и количество 368 (выкинули файл размером 7), вместо файла размером 7 берем файл размером 9 (убеждаемся сначала, что он есть в файле). Выходит, что максимальное количество - 369, максимальный размер - 9.

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

file = open("2.txt", "r", encoding="UTF-8")
lines = file.readlines()

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

users_count = 0
maximum_file = 0
current_summ = 0
i = 0
while i < n:
    if current_summ + array[i] > s:
        break
    current_summ += array[i]
    i += 1

users_count = i
current_summ -= array[i - 1]

while i < n:
    if current_summ + array[i] > s:
        break
    i += 1
current_summ += array[i - 1]
maximum_file = array[i - 1]

print(users_count, maximum_file)

Ответ: 369 9

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

Задача 19#18208

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

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

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

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

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

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

Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Пользовательские файлы нужно отсортировать по возрастанию, чтобы набрать наибольшее количество файлов (жмём на число, с которого начинаются размеры файлов → Сортировка и фильтр → Сортировка по возрастанию). Когда файлы отсортированы, начинаем набирать сумму, пока она меньше, чем максимальный размер файлов. Зажимаем на 1 ячейке столбца с размерами файлов и начинаем тянуть вниз, справа снизу будет написана сумма и количество элементов. Максимальная сумма, которую мы можем собрать, чтобы не превысить максимальную сумму файлов, - это 1979. Однако, мы можем максимально набрать 1987, а набрали 1979, значит, последний файл размером 9 мы можем выкинуть и взять файл, который займет больше места, но общая сумма не превысит максимальный размер. Запоминаем сумму 1970 и количество 396 (выкинули файл размером 9), вместо файла размером 9 берем файл размером 17 (убеждаемся сначала, что он есть в файле). Выходит, что максимальное количество - 397, максимальный размер - 17.

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

file = open("Задание 26.txt", "r", encoding="UTF-8")
lines = file.readlines()

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

users_count = 0
maximum_file = 0
current_summ = 0
i = 0
while i < n:
    if current_summ + array[i] > s:
        break
    current_summ += array[i]
    i += 1

users_count = i
current_summ -= array[i - 1]

while i < n:
    if current_summ + array[i] > s:
        break
    i += 1
current_summ += array[i - 1]
maximum_file = array[i - 1]

print(users_count, maximum_file)

Ответ: 397 17

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

Задача 20#16460

Также раз в год Дед Мороз создает базу для оленей, на которых он полетит раздавать подарки. Однако кол-во свободных мест для оленей на базе, куда он помещает своих оленей может оказаться меньше, чем суммарное кол-во оленей. Известно, сколько связок оленей у Деда Мороза. По заданной информации о кол-ве связок оленей и свободных местах на базе определите максимальное кол-во связок оленей, которые поместятся на базу, и максимальное кол-во оленей в связке, которые смогут поместиться на базу. В ответе запишите сначала кол-во связок оленей, а затем, без разделительных знаков, кол-во оленей.

На вход программе подается два числа: N - кол-во свобоных мест для оленей и M - кол-во связок оленей, а затем M чисел, где каждое число - кол-во оленей в связке.

В ответе запишите результат выполнения программы для таких входных данных:

200 5

40

70

30

50

20

Показать ответ и решение
n,m = map(int,input().split())  
a = []  
for i in range(m):  
    a.append(int(input()))  
a.sort()  
s = 0  
maxim = -1  
counter = 0  
for i in range(m):  
    if s + a[i] <= n:  
        counter += 1  
        s += a[i]  
    if a[i] <= n:  
        maxim = a[i]  
print(counter,maxim)

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