Задание №26 ЕГЭ по информатике проверяет умение обрабатывать информацию из файла с использованием сортировки. Его можно выполнить с помощью табличного процессора (например, Excel) или языка программирования (например, Python). Рассмотрим оба варианта решения.
Условие задачи
Системный администратор еженедельно создаёт архив пользовательских файлов. Объём диска, куда помещается архив, может быть меньше суммарного объёма архивируемых файлов. Известен объём файла каждого пользователя. По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите:
- Максимальное число пользователей, чьи файлы можно сохранить в архиве.
- Максимальный размер имеющегося файла, который может быть сохранён в архиве при условии, что сохранены файлы максимально возможного числа пользователей.
Решение с помощью Excel
Входные данные: два числа в первой строке файла – размер свободного места на диске и количество пользователей. Объёмы файлов пользователей указаны в последующих строках.
- Копирование данных: Скопируйте данные из текстового файла в Excel.
- Удаление первой строки: Удалите первую строку.
- Сортировка: Отсортируйте данные по возрастанию объёма файлов.
- Определение максимального числа пользователей: Суммируйте объёмы файлов, начиная с самых маленьких, пока сумма не превысит размер свободного места на диске. Количество файлов в сумме – ответ на первый вопрос.
- Определение максимального размера файла: Найдите разницу между размером свободного места и суммой объёмов файлов, выбранных на предыдущем шаге. Добавьте эту разницу к объёму последнего выбранного файла. Если файла с таким объёмом нет, возьмите максимально близкий по размеру меньший файл. Это ответ на второй вопрос.
Решение с помощью Python
- Чтение файла: Откройте файл и прочитайте все строки в список data.
- Обработка первой строки: Извлеките из первой строки размер свободного места (s) и количество пользователей (n), преобразовав их в целые числа. Удалите первую строку из списка data.
- Сортировка и преобразование: Отсортируйте список data по возрастанию и преобразуйте все элементы в целые числа.
- Итерация и суммирование: Итерируйте по отсортированному списку, суммируя элементы до тех пор, пока сумма не превысит s. Записывайте добавляемые элементы в отдельный список.
- Определение максимального числа пользователей: Количество элементов в списке после суммирования – ответ на первый вопрос.
- Определение максимального размера файла: Найдите разницу между s и суммой элементов. Найдите максимальный элемент в отсортированном списке, разница между которым и последним добавленным элементом меньше или равна найденной разнице. Это ответ на второй вопрос.
Пример кода (Python):
with open('input.txt') as f:
s, n = map(int, f.readline().split())
data = sorted(map(int, f.readlines()))
current_sum = 0
count = 0
files = []
for file_size in data:
if current_sum + file_size <= s:
current_sum += file_size
count += 1
files.append(file_size)
remaining_space = s - current_sum
max_additional_size = 0
if count > 0:
max_additional_size = files[-1] + remaining_space
result_max_size = 0
for size in data:
if size <= max_additional_size:
result_max_size = size
else:
break
print(count)
print(result_max_size)
Задание 26 ЕГЭ по информатике требует понимания алгоритмов сортировки и работы с файлами. Решение может быть реализовано как в табличном процессоре, так и на языке программирования. Ключевой момент – сортировка данных по возрастанию объёма файлов для оптимизации выбора файлов для архивации.