26.01 Архив пользовательских файлов
Ошибка.
Попробуйте повторить позже
Дед Мороз раз в год создает склад подарков для детей. Однако кол-во свободных мест для подарков на складе, куда он помещает все свои подарки может оказаться меньше, чем суммарное кол-во подарков. Известно, сколько подарков получит каждый конкретный ребенок. По заданной информации о кол-ве подарков для каждого ребенка и свободных местах на складе определите максимальное кол-во детей, чьи подарки поместятся на склад, а также максимальное кол-во подарков, который получит конкретный ребенок, при условии, что на складе максимальное кол-во подарков. В ответе сначало запишите кол-во детей, а затем, без разделительных знаков, запишите кол-во подарков.
На вход программе подается два числа: N - кол-во свободных мест для подарков и M - кол-во детей, а затем M чисел, где каждое число - кол-во подарков для ребенка.
В ответ запишите результат выполнения программы для таких входных данных:
120 6
20
10
30
25
45
35
n, m = map(int, input().split()) a = [] for i in range(m): a.append(int(input())) a = sorted(a) summa = 0 maxim = n i = 0 while summa < maxim: summa += a[i] i += 1 j = i i -= 1 summa -= a[i] diff = maxim - summa ans = 0 for i in range(i, m): if a[i] > ans and a[i] <= diff: ans = a[i] print(j, ans, summa)
Ошибка.
Попробуйте повторить позже
Дед Мороз раз в год создает склад подарков для детей. Однако кол-во свободных мест для подарков на складе, куда он помещает все свои подарки может оказаться меньше, чем суммарное кол-во подарков. Известно, сколько подарков получит каждый конкретный ребенок. По заданной информации о кол-ве подарков для каждого ребенка и свободных местах на складе определите максимальное кол-во детей, чьи подарки поместятся на склад, а также максимальное кол-во подарков, который получит конкретный ребенок, при условии, что на складе кол-во детей, чьи подарки уже хранятся на складе, не убавится. В ответе сначалa запишите кол-во детей, а затем, без разделительных знаков, запишите кол-во подарков.
На вход программе подается два числа: N - кол-во свободных мест для подарков и M - кол-во детей, а затем M чисел, где каждое число - кол-во подарков для ребенка.
В ответ запишите результат выполнения программы для таких входных данных:
120 6
20
10
30
25
45
35
a = []
for i in range(m):
a.append(int(input()))
a.sort()
s = 0
counter = 0
maxim = -1
for i in range(m):
if s + a[i] > n:
n -= a[i-1]
maxim = a[i-1]
for j in range(i,m):
if s + a[j] <= n:
maxim = a[j]
else:
s += a[j-1]
break
break
elif s + a[i] == n:
maxim = a[i]
counter += 1
break
else:
s += a[i]
counter += 1
print(counter,maxim)
Ошибка.
Попробуйте повторить позже
Также раз в год Дед Мороз создает базу для оленей, на которых он полетит раздавать подарки. Однако кол-во свободных мест для оленей на базе, куда он помещает своих оленей может оказаться меньше, чем суммарное кол-во оленей. Известно, сколько связок оленей у Деда Мороза. По заданной информации о кол-ве связок оленей и свободных местах на базе определите максимальное кол-во связок оленей, которые поместятся на базу, и максимальное кол-во оленей в связке, которые смогут поместиться на базу. В ответе запишите сначала кол-во связок оленей, а затем, без разделительных знаков, кол-во оленей.
На вход программе подается два числа: N - кол-во свобоных мест для оленей и M - кол-во связок оленей, а затем M чисел, где каждое число - кол-во оленей в связке.
В ответе запишите результат выполнения программы для таких входных данных:
200 5
40
70
30
50
20
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)
Ошибка.
Попробуйте повторить позже
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные
В первой строке входного файла находятся два числа: — размер свободного места на диске (натуральное число, не превышающее 10 000) и — количество пользователей (натуральное число, не превышающее 1000). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 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)
Ошибка.
Попробуйте повторить позже
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные
В первой строке входного файла находятся два числа: — размер свободного места на диске (натуральное число, не превышающее 10 000) и — количество пользователей (натуральное число, не превышающее 1000). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 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)
Ошибка.
Попробуйте повторить позже
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные
В первой строке входного файла находятся два числа: — размер свободного места на диске (натуральное число, не превышающее 10 000) и — количество пользователей (натуральное число, не превышающее 1000). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 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)
Ошибка.
Попробуйте повторить позже
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите минимальное число пользователей, чьи файлы можно сохранить в архиве при максимально занятом дисковом пространстве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы минимально возможного числа пользователей.
Входные данные
В первой строке входного файла находятся два числа: — размер свободного места на диске (натуральное число, не превышающее 10 000) и — количество пользователей (натуральное число, не превышающее 1000). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 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)
Ошибка.
Попробуйте повторить позже
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите минимальное число пользователей, чьи файлы можно сохранить в архиве при максимально занятом дисковом пространстве, а также минимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы минимально возможного числа пользователей при максимально занятом дисковом пространстве.
Входные данные
В первой строке входного файла находятся два числа: — размер свободного места на диске (натуральное число, не превышающее 10 000) и — количество пользователей (натуральное число, не превышающее 1000). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов.
Александр Романович раз в неделю создаёт архив, состоящий из домашних заданий марафонцев. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых домашек. Известно, какой объём занимает домашнее задание каждого марафонца.
По заданной информации об объёме домашних заданий марафонцев и свободном объёме на архивном диске определите максимальное число марафонцев, чьи домашки можно сохранить в архиве, а также максимальный размер имеющегося домашнего задания, который может быть сохранён в архиве, при условии, что сохранены домашки максимально возможного числа марафонцев.
Входные данные:
В первой входной строке подается два числа: — размер свободного места на диске и — кол-во марафонцев. В ответе запишите следующее: сначала наибольшее кол-во марафонцев, чьи домашки могут быть помещены в архив, затем максимальный размер домашнего задания, которое может быть сохранено в архиве, при условии, что сохранены домашки максимально возможного числа марафонцев.
Пример входного файла:
Ответ для приведённого примера:
Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения свободного места на диске и кол-ва марафонцев куда-нибудь, где они нам
не помешают. Сортируем числа по возрастанию, так как именно таким образом мы разместим на лиске
максимальное количество. Максимально заполняем наш диск, размер которого равен 8358. Для удобства все
файлы, которые можно поместить в архив, перенесем в отдельный столбик, например в . Получаем сумму
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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Системный администратор «Школково» раз в месяц создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также сумму максимального и минимального объемов файлов пользователей в архиве, при условии, что сохранены файлы максимально возможного числа пользователей (при нескольких вариантах одинакового максимального количества пользователей необходимо выбрать максимальную сумму).
Входные данные:
В первой строке входного файла находятся два числа: — размер свободного места на диске (натуральное число, не превышающее ) и — количество пользователей (натуральное число, не превышающее ). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие ), каждое в отдельной строке.
Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем сумму объемов максимального и минимального файлов пользователей в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Пример входного файла:
При таких исходных данных мы можем сохранить максимум пользователей. Это будут пользователи со следующим объемом данных: . Сумма наибольшего и наименьшего будет равна . Ответ: .
Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Сортируем
числа по возрастанию, так как именно таким образом мы добавим в архив максимальное количество. Максимально
заполняем наш архив, размер которого равен 6000. Для удобства все файлы, которые можно поместить в архив, перенесем
в отдельный столбик, например в . Получаем сумму 5980. А вдруг можно получить больше? Проверим это, убрав
последний элемент обратно в столбик . Теперь сумма размеров выбранных файлов равна 5955. Посмотрим, есть ли
среди неиспользованных нами файлов такие, значение которых максимально приближено к числу 45 (6000 - 5955), но не
больше него. Максимальное число, которое мы можем положить в архив - 45. Значит, переносим его в столбик и
считаем ответ.
Решение 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])
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов.
Эксперт «Школково» раз в неделю создаёт архив файлов крабоедов, которые не сдали вовремя домашнее задание. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого крабоеда.
По заданной информации об объёме файлов крабоедов и свободном объёме на архивном диске определите сумму максимального размера имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимального возможного числа крабоедов, и их модуль разности.
Входные данные:
В первой строке входного файла находятся два числа: — размер свободного места на диске Эксперта (натуральное число, не превышающее ) и — количество крабоедов (натуральное число, не превышающее ). В следующих строках находятся значения объёмов файлов каждого крабоеда (все числа натуральные, не превышающие ), каждое в отдельной строке.
Запишите в ответе два числа: сначала число, состоящее из суммы объёма файла, имеющего максимальный размер и сохранённого в архиве (при условии, что сохранены файлы максимального возможного числа крабоедов), и максимального числа крабоедов, чьи файлы можно сохранить; затем их модуль разности.
Пример входного файла:
При таких исходных данных можно сохранить файлы максимум двух крабоедов. Возможные объёмы этих двух файлов: . Наибольший объём файла из перечисленных пар — , поэтому ответ для приведённого примера:
Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва крабоедов куда-нибудь, где они нам не помешают. Сортируем числа
по возрастанию, так как именно таким образом мы добавим в архив максимальное количество. Максимально заполняем
наш архив, размер которого равен 8200. Для удобства все файлы, которые можно поместить в архив, перенесем в
отдельный столбик, например в . Получаем сумму 8176. А вдруг можно получить больше? Проверим это, убрав
последний элемент обратно в столбик . Теперь сумма размеров выбранных файлов равна 8147. Посмотрим, есть ли
среди неиспользованных нами файлов такие, значение которых максимально приближено к числу 53 (8200 - 8147), но не
больше него. Максимальное число, которое мы можем положить в архив - 50. Значит, переносим его в столбик и
считаем ответ.
Решение 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))
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя, у разных пользователей объём файлов может быть одинаковым.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные:
В первой строке входного файла находятся два числа: — размер свободного места на диске (натуральное число, не превышающее ) и — количество пользователей (натуральное число, не превышающее ). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие ), каждое в отдельной строке.
Запишите в ответе два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа.
Пример входных данных:
При таких исходных данных можно сохранить файлы максимум трёх пользователей. Объёмы этих трёх файлов , и . Наибольший объём файла — , поэтому ответ для приведённого примера:
Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Первые два числа ( и ) вставим правее в ячейки С1 и D1, чтобы было удобнее. Отфильтруем столбец А по
возрастанию. С помощью кнопок shift + вниз из ячейки А1 будем двигаться вниз, пока сумма в правом нижнем углу будет
меньше . Получим, что наибольшее число пользователей, чьи файлы могут быть помещены в архив, равно
. Для удобства переместим всех пользователей в столбец В. Теперь вычислим, сколько свободного
места осталось на диске. Для этого в ячейку D762 запишем формулу =C1-СУММ(B1:B3236). Получим, что
оставшееся место на диске равно . Текущий максимальный размер файла, который поместится в архив,
равен числу в ячейке В762, это . Тогда максимальный размер имеющегося файла, который может быть
сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей, равен
, то есть . Проверяем, действительно, в ячейке А1195 есть число . Переместим его в столбец В, а
число, записанное в ячейке В762, переместим обратно в столбец А. Теперь разница в ячейке D762 между
максимальной суммой и суммой выбранных чисел равна , значит, никакое число больше взять не получится.
Решение 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя, у разных пользователей объём файлов может быть одинаковым.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите минимальное число пользователей, чьи файлы можно сохранить в архиве, при условии что занята максимально возможная часть объёма, а также максимальный размер имеющегося файла, который может быть сохранён в архиве.
Входные данные:
В первой строке входного файла находятся два числа: S — размер свободного места на диске (натуральное число, не превышающее 10000) и N — количество пользователей (натуральное число, не превышающее 10000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 1000), каждое в отдельной строке.
Запишите в ответе два числа через пробел: сначала минимальное число пользователей, чьи файлы могут быть помещены в архив, при условии что занята максимально возможная часть объёма, затем максимальный размер имеющегося файла, который может быть сохранён в архиве.
Пример входных данных:
400 4
150
90
110
190
При таких исходных данных можно сохранить файлы минимум трёх пользователей. Объёмы этих трёх файлов 90, 110 и 190. Наибольший объём файла — 190, поэтому ответ для приведённого примера: 3 190.
Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва крабоедов куда-нибудь, где они нам не помешают. Сортируем числа
по убыванию, так как именно таким образом мы добавим в архив минимальное количество. Максимально заполняем наш
архив, размер которого равен 3875. Для удобства все файлы, которые можно поместить в архив, перенесем в отдельный
столбик, например в . Получаем сумму 3000. Посмотрим, есть ли среди неиспользованных нами файлов такие,
значение которых максимально приближено к числу 875 (3875 - 3000), но не больше него. Максимальное
число, которое мы можем положить в архив - 875. Значит, переносим его в столбик и считаем ответ.
Решение 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])
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя, у разных пользователей объём файлов может быть одинаковым.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве.
Входные данные:
В первой строке входного файла находятся два числа: 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя, у разных пользователей объём файлов может быть одинаковым.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные:
В первой строке входного файла находятся два числа: — размер свободного места на диске (натуральное число, не превышающее ) и — количество пользователей (натуральное число, не превышающее ). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие ), каждое в отдельной строке.
Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа.
Пример входных данных:
При таких исходных данных можно сохранить файлы максимум трёх пользователей. Объёмы этих трёх файлов . Наибольший объём файла — , поэтому ответ для приведённого примера:
Решение 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также минимально возможное оставшееся место на диске, после сохранения максимального числа пользователей.
Входные данные:
В первой строке входного файла находятся два числа: — размер свободного места на диске (натуральное число, не превышающее ) и — количество пользователей (натуральное число, не превышающее ). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие ), каждое в отдельной строке.
Запишите в ответе два числа через пробел: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем оставшееся место на диске, после сохранения максимального числа пользователей.
Пример входных данных:
При таких исходных данных можно сохранить файлы максимум трёх пользователей. Объёмы этих трёх файлов , и . Оставшееся место на диске: , поэтому ответ для приведённого примера: .
Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Сортируем
числа по возрастанию, так как именно таким образом мы добавим в архив максимальное количество. Максимально
заполняем наш архив, размер которого равен . Для удобства все файлы, которые можно поместить в архив,
перенесем в отдельный столбик, например в . Получаем сумму . А вдруг можно получить больше? Проверим это,
убрав последний элемент обратно в столбик . Теперь сумма размеров выбранных файлов равна . Посмотрим,
есть ли среди неиспользованных нами файлов такие, значение которых максимально приближено к числу
, но не больше него. У нас есть число . Значит, переносим его в столбик и считаем ответ.
Решение 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные и выходные данные.
В первой строке входного файла находятся два числа: 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов.
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя. Администратор сохраняет файлы по следующему правилу: выбирается файл максимального размера, который может быть записан на диск, затем выбирается файл минимального размера, который может быть записан на диск. Данный сценарий повторяется до тех пор, пока на диск нельзя будет записать ни одного из оставшихся файлов.
Входные данные:
Первая строка входного файла записаны два числа: — размер свободного места на диске (натуральное число, не превышающее ) и — количество пользователей (натуральное число, не превышающее ). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие ), каждое в отдельной строке.
Запишите в ответе два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем размер последнего сохраненного файла.
Пример входного файла:
При таких входных данных, ответ будет:
Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Всего чисел у нас .
Отсортируем числа в изначальном столбце по возрастанию. Далее распределим на колонки таким способом:
колонку строчки от до оставляем на месте, а и до копируем и вставляем в столбец B.
Далее столбец B сортируем по убыванию.
Весь объем у нас диска составляет . Поэтому выделяем ячейки до той степени, пока минимально не превысим это число.
Мы остановились на строке и сумма будет . Но если не брать самый маленький файл - , то
. Значит мы возьмем последний файл и всего файлов, которые мы возьмем, будет .
Решение 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)
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные:
В первой строке входного файла находятся два числа: — размер свободного места на диске (натуральное число, не превышающее ) и — количество пользователей (натуральное число, не превышающее ). В следующих строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие ), каждое в отдельной строке.
Выходные данные:
Запишите в ответе два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Пример входного файла:
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов и и или и . Наибольший объём файла из перечисленных пар — , поэтому ответ для приведённого примера:
Решение 1 ( Excel / LibreOffice):
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Перенесем числовые значения размера архива и кол-ва пользователей куда-нибудь, где они нам не помешают. Сортируем
числа по возрастанию, так как именно таким образом мы добавим в архив максимальное количество. Максимально
заполняем наш архив, размер которого равен 53478. Для удобства все файлы, которые можно поместить в архив,
перенесем в отдельный столбик, например в . Получаем сумму 53467. А вдруг можно получить больше? Проверим это,
убрав последний элемент обратно в столбик . Теперь сумма размеров выбранных файлов равна 53427. Посмотрим, есть
ли среди неиспользованных нами файлов такие, значение которых максимально приближено к числу 51 (53478- 53427), но
не больше него. Максимальное число, которое мы можем положить в архив - 51. Значит, переносим его в столбик и
считаем ответ.
Решение 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])
Ошибка.
Попробуйте повторить позже
Задание выполняется с использованием прилагаемых файлов
Администратор написал скрипт для раскладки архивов на дисков, каждый объемом . Алгоритм скрипта обрабатывает файлы в порядке убывания их размера. Если файл помещается на диск, то следующий по размеру файл стараются поместить на следующий диск. Если не помещается, то на следующий, и так по кругу. Если файл не поместился ни на один диск, то он откладывается в локальную папку. Укажите в ответе два числа: объем всех отложенных файлов и их количество.
Входные данные:
В первой строке входного файла записаны значения (объём диска), (количество дисков) и (количество архивов). Каждая из следующих строк содержит одно целое число — размер очередного архива. В ответе запишите два числа — объем всех отложенных файлов и их количество.
Пример входного файла:
При таких входных данных ответ будет и : в локальную папку отложены архивы размером и .
Решение 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))