9 мин чтения

ЕГЭ по информатике 2026 · задание 26 из 27

ЕГЭ по информатике 2026, задание 26: сортировка

Задание 26 — высокий уровень, максимум 2 балла. Нужно обработать целые числа из файла: отсортировать и применить правило распределения, занятости или выбора. Можно писать свою сортировку, взять sorted или решить в электронной таблице. На практике файл длинный, программа короче и надёжнее.

В 2026 году данные в `.txt`.

Оценка по спецификации:

  • 2 балла — оба числа верны и стоят в нужных ячейках;
  • 1 балл — числа перепутаны местами или верно только одно;
  • 0 — в остальных случаях.

Оба числа всё равно нужно получать из одной модели. Подгонять второе «на глаз» после первого не стоит: частичный балл не спасает, если модель неверна и случайно совпало только одно.

Конспект

Прочитайте, что является ключом сортировки. Часто есть два поля: размер и время, или время начала и время конца. Сортируют не по тому полю, которое стоит первым в файле, а по тому, которое задаёт правило.

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

Типовые сюжеты:

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

После сортировки не теряйте исходный номер, если он нужен в ответе. Храните кортеж (ключ, номер), а не только ключ.

Первая строка файла часто содержит служебные числа: вместимость и количество записей. Не сортируйте её вместе с данными.

Проверка: на первых 10 строках повторите алгоритм руками. Если счётчик на маленьком куске совпал, гоняйте полный файл.

Шаблон на Python

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

lines = [tuple(map(int, line.split())) for line in open("26.txt") if line.strip()]
header, items = lines[0], lines[1:]
capacity = header[0]
items = sorted(items, key=lambda row: (row[0], row[1]))

taken = 0
used = 0
last = None
for row in items:
    size = row[0]
    if used + size <= capacity:
        used += size
        taken += 1
        last = row
    else:
        break

print(taken, last[0] if last else 0)

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

Второй ответ часто не «последний положенный», а максимальный элемент, который ещё можно поставить вместо кого-то или в остаток. Тогда после заполнения нужен отдельный поиск по неотложенным. Не печатайте last, пока не сопоставите его с вопросом.

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

  • Неверное направление сортировки.
  • Служебная строка попала в данные.
  • При равенстве времени забыт номер, и выбран не тот объект.
  • В ячейки ответа числа записаны в обратном порядке. Это ещё может дать 1 балл, но только если оба верны.

Попробуйте объяснить с Мишкой

Бесплатный ИИ-репетитор объяснит любую тему так, как вам понятно — шаг за шагом.

Начать бесплатно