Задание 26 ЕГЭ по информатике 2027: сортировка и обработка файла

Задание 26 ЕГЭ по информатике — обработка файла с целыми числами: данные сортируют, а потом выбирают или моделируют процесс по правилу из условия. В ответе два числа; за полностью верный ответ ставят 2 балла, за частично верный — 1.

Как решать

В первой строке файла обычно стоят параметры задачи — количество записей и ограничение: объём, время, число мест. Дальше идут записи, по одной в строке. Прочитайте их в список и отсортируйте: почти каждое решение задания 26 начинается с сортировки. В демоверсии 2027 года файл занимает около 300 КБ, и сортировка такого списка в Python идёт доли секунды.

Если нужно выбрать как можно больше элементов под общим ограничением, берите самые маленькие, пока они помещаются: сортировка по возрастанию и один проход. Второе число ответа часто уточняет выбор, например просит самый большой элемент, который можно взять без уменьшения количества. Его находят заменой: убирают наибольший из выбранных и ищут наибольший элемент, который помещается на освободившееся место (пример 1).

Если записи — события во времени (запросы, заявки, въезды), отсортируйте их по времени и промоделируйте процесс шаг за шагом: для каждого ресурса храните момент, когда он освободится, и на каждом событии проверяйте правило из условия (пример 2). Отдельно прочитайте, что происходит в граничный момент: свободен ли ресурс в ту же минуту, когда его вернули.

За задание ставят 2 балла, если оба числа верны и стоят на своих местах. Если числа перепутаны местами или верно только одно число на своём месте, ставят 1 балл.

Примеры с решением

Пример 1

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

Входные данные. В первой строке файла — числа N и T, в каждой из следующих N строк — длительность одного выступления (натуральное число).

Файл данных: 26_ex1.txt — 801 строка, 2,7 КБ. Первые строки файла:

800 16000
139
86
162
177
17
26
15

Решение на Python

with open('26_ex1.txt') as f:
    n, t = map(int, f.readline().split())
    a = sorted(int(f.readline()) for _ in range(n))

# Больше всего выступлений — если брать самые короткие, пока хватает времени.
total = count = 0
while count < n and total + a[count] <= t:
    total += a[count]
    count += 1

# Самое длинное из выбранных заменяем на самое длинное, какое ещё помещается.
rest = total - a[count - 1]
longest = max(x for x in a[count - 1:] if rest + x <= t)
print(count, longest)

Ответ: 328 112

После сортировки берём самые короткие выступления, пока они помещаются в T минут: их 328. Затем убираем самое длинное из выбранных, и освобождается время на одно выступление длиной до T минус сумма остальных 327. Самое длинное выступление, которое помещается в это время, длится 112 минут, и количество выступлений при замене не меняется.

Пример 2

Пункт проката выдаёт K велосипедов с номерами от 1 до K. За день поступило N заявок, для каждой известны минута начала и минута окончания аренды, считая от начала суток. Заявки обрабатываются в порядке времени начала, все времена начала различны. По заявке выдают свободный велосипед с наименьшим номером; велосипед свободен, если его вернули раньше минуты начала заявки. Если свободных велосипедов нет, заявку отклоняют. Определите количество отклонённых заявок и номер велосипеда, который выдали по последней удовлетворённой заявке.

Входные данные. В первой строке файла — числа N и K, в каждой из следующих N строк — минута начала и минута окончания одной заявки. Заявки в файле записаны не по порядку.

Файл данных: 26_ex2.txt — 901 строка, 7,8 КБ. Первые строки файла:

900 95
1205 1306
1060 1132
708 801
1207 1244
801 890
1238 1265
1001 1101

Решение на Python

with open('26_ex2.txt') as f:
    n, k = map(int, f.readline().split())
    requests = sorted(tuple(map(int, f.readline().split())) for _ in range(n))

busy_until = [-1] * k  # минута, в которую велосипед вернут; -1 — ещё не выдавали
rejected = 0
last_bike = 0
for start, end in requests:
    for i in range(k):
        if busy_until[i] < start:  # свободен: вернули раньше начала заявки
            busy_until[i] = end
            last_bike = i + 1
            break
    else:
        rejected += 1
print(rejected, last_bike)

Ответ: 51 23

Заявки сортируются по минуте начала: кортежи в Python сравниваются по первому элементу. Для каждого велосипеда хранится минута, когда его вернут, и заявка получает первый велосипед, у которого эта минута меньше начала заявки. Ветка else у цикла for выполняется, только если цикл дошёл до конца без break, то есть свободного велосипеда не нашлось.

Типичные ошибки

Потренироваться на тренажёре

Частые вопросы

Сколько баллов дают за задание 26 ЕГЭ по информатике?

2 первичных балла за полностью верный ответ. Если числа перепутаны местами или верно только одно число на своём месте, ставят 1 балл.

Можно ли в задании 26 пользоваться встроенной сортировкой?

Да, на экзамене можно пользоваться встроенной сортировкой языка: в Python это функция sorted() и метод sort(). Сложность задания в другом — понять, по какому признаку сортировать и что делать после сортировки.

Как проверить решение задания 26 до запуска на файле?

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

Официальные материалы

Другие задания

Все задания и структура экзамена — на странице ЕГЭ по информатике. Соседние разборы: задание 25 и задание 27.

Описание задания сверено 28 сентября 2026 года со спецификацией 2027 года (документы 2027 года). Примеры составлены нами по структуре демоверсии, каждое решение запущено, и напечатанный им ответ совпадает с ответом на странице. Кодолимп не связан с разработчиками экзамена. Заметили неточность — напишите нам.