5 мин чтения

Задание 26 ЕГЭ по информатике 2027 — журнал сервера и резервные копии

Разбор задания 26 ЕГЭ по информатике 2027: журнал запросов «ЧЧ:ММ:СС клиент объём», резервная копия при переполнении раздела, клиент с наибольшим объёмом и сумма двух наибольших копий до 11:59:59 (ответ 7040 52204). Один проход на Python.

Задание 26 в 2027 году — журнал работы сервера. В файле строки «время, клиент, объём», раздел памяти ограниченной вместимости и резервные копии, которые сервер делает при переполнении. Спрашивают клиента с наибольшим общим объёмом и сумму двух наибольших копий, созданных не позднее заданного времени; в демоверсии ответ 7040 52204. Главное отличие от формы прошлых лет: сортировать нельзя — строки журнала уже стоят по времени, и их проходят по порядку. Ниже — условие, разбор типового примера по строкам, код на Python и три ловушки, каждая из которых меняет ответ.

Жадный набор с сортировкой — коробки, аккумуляторы, архив файлов — разобран в статье о задании 26 2026 года; для задач из сборников прошлых лет он по-прежнему нужен.

Условие демоверсии 2027

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

Первая строка файла — N (N < 1 000 000) и K (K < 1 000 000): число строк журнала и вместимость раздела в Кбайт. Каждая из N строк: время «ЧЧ:ММ:СС», идентификатор клиента C и объём запроса S (S < K). В ответе — два числа: идентификатор, затем сумма.

Типовой пример из условия (K = 140 000):

8 140000
01:01:01 101 20000
03:03:03 202 110000
05:05:05 101 90000
07:07:07 303 62000
10:10:10 101 48000
15:15:15 202 12000
21:21:21 303 120000
23:23:23 404 134000

Ответ для примера: 303 220 000. Ответ ФИПИ для файла демо: 7040 52204.

Разбор типового примера по строкам

Накопитель — сколько лежит в разделе. Запрос помещается, если накопитель плюс объём не больше K = 140 000; иначе сначала копия, потом запрос.

ВремяКлиентОбъёмПомещается?КопияНакопитель после
01:01:0110120 000да—20 000
03:03:03202110 000да (130 000)—130 000
05:05:0510190 000нет (220 000)130 00090 000
07:07:0730362 000нет (152 000)90 00062 000
10:10:1010148 000да—110 000
15:15:1520212 000да—122 000
21:21:21303120 000нет (242 000)122 000120 000
23:23:23404134 000нет (254 000)120 000134 000

Четыре копии: 130 000 (05:05:05), 90 000 (07:07:07), 122 000 (21:21:21), 120 000 (23:23:23). Остаток 134 000 в конце копией не становится. Суммы по клиентам: 101 — 158 000, 202 — 122 000, 303 — 182 000, 404 — 134 000; лидер 303. Копии не позднее 11:59:59 — первые две, их сумма 220 000. Ответ 303 220 000 — как в условии.

Обрати внимание на строку 05:05:05: копия равна 130 000 — тому, что лежало до запроса, а не 220 000. И после копии накопитель равен объёму нового запроса, 90 000, а не нулю.

Решение на Python

CUT = "11:59:59"

with open("demo_26.txt") as f:
    head = f.readline().split()
    limit = int(head[1])
    acc = 0
    copies = []
    total = {}
    for line in f:
        parts = line.split()
        moment = parts[0]
        client = int(parts[1])
        size = int(parts[2])
        if acc + size > limit:          # запрос не помещается
            if moment <= CUT:           # копия до отсечки — считаем
                copies.append(acc)
            acc = 0                     # раздел освобождён
        acc += size                     # запрос записан
        total[client] = total.get(client, 0) + size

best = 0
for client in total:
    if best == 0 or total[client] > total[best]:
        best = client

copies.sort(reverse=True)
print(best, copies[0] + copies[1])      # 7040 52204

Проход по журналу один: 15 001 строка читается мгновенно, и даже миллион строк из ограничения условия — за секунды. readline до цикла забирает служебную строку с N и K; дальше каждая строка режется split. Время остаётся строкой и сравнивается с отсечкой как строка — формат с ведущими нулями это позволяет. Копия записывается до того, как запрос ляжет в раздел, и только если её время не позднее отсечки. Сумма двух наибольших — из отсортированного списка, а не одним max.

На демо-файле код печатает 7040 52204: клиент 7040 передал 303 454 Кбайт, копий за сутки 1072, до отсечки — 534.

Ещё один пример: отсечка меняет ответ

Журнал из семи строк, K = 1000, отсечка 11:59:59:

7 1000
08:10:00 11 400
08:40:00 22 500
09:05:00 11 300
09:30:00 33 400
11:50:00 22 350
12:30:00 33 630
13:00:00 11 100
ВремяКлиентОбъёмКопияНакопитель после
08:10:0011400—400
08:40:0022500—900
09:05:0011300900300
09:30:0033400—700
11:50:0022350700350
12:30:0033630—980
13:00:0011100980100

Три копии: 900, 700 и 980. Не позднее отсечки — первые две, сумма 1600; без отсечки в сумму попала бы копия 980 и получилось бы 1880. Суммы по клиентам: 11 — 800, 22 — 850, 33 — 1030. Ответ: 33 1600. Код из раздела выше печатает его на этом файле.

Три ловушки, которые меняют ответ

ОшибкаЧто получится на демо
Забыть отсечку по времени — считать все копии за сутки52205 вместо 52204
Копировать раздел вместе с новым запросом (копия = acc + size, накопитель = 0)57094
Отсортировать журнал по объёму или по клиентудругие моменты переполнения, другие копии

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

Чем журнал отличается от прежних вариантов

В демо 2026 задание 26 было про рейтинг продуктов: все 2N сроков хранения и годности упорядочивали по возрастанию и расставляли продукты с начала и с конца. В задачах прошлых лет встречается и жадный набор — в демо 2023, например, коробки, вкладываемые друг в друга. Оба приёма начинаются с сортировки, журнал — нет:

Жадный набор (сборники)Журнал сервера (2027)
Данныесписок значенийстроки по времени
Первая строкаодно или два числаN и K
Приёмсортировка и один проход с пределомодин проход в порядке файла без сортировки
Ответколичество и величинаидентификатор и сумма

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

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

Копия вместе с новым запросом

Сервер сначала копирует накопленное, потом записывает запрос. Копия равна acc до запроса, после копии acc равен объёму запроса.

Нет отсечки по времени

В вопросе «созданных не позднее 11:59:59». Копии после отсечки в сумму не входят, хотя для сумм по клиентам считаются все запросы.

Сортировка журнала

Любая сортировка ломает порядок событий. Читать строки так, как они лежат.

Время переведено в число неверно

int("11:59:59") падает. Сравнивай строки или переводи в секунды: h * 3600 + m * 60 + s.

Остаток в конце посчитан копией

После последней строки в разделе что-то лежит, но копией это не становится: копия делается только при переполнении.

Подборка ошибок по всем номерам — в статье Типичные ошибки на ЕГЭ по информатике.

Тайминг на экзамене

ЭтапВремя
Прочитать условие: отсечка, порядок чисел в ответе2 мин
Набрать проход по журналу5 мин
Проверить на типовом примере (303 220 000)3 мин
Запустить на файле, записать ответ2 мин
Итого12 мин

Спецификация отводит 35 минут — почти в три раза больше. Запас стоит потратить на проверку типового примера: он ловит и копию с новым запросом, и забытую отсечку.

Как тренироваться

  1. Реши типовой пример из условия руками, строка за строкой, как в таблице выше, — потом прогони код и сверь копии.
  2. Пять заданий с разными отсечками и K — проверяй, что сумма двух копий не больше 2K.
  3. Одно задание специально реши с сортировкой и посмотри, как уезжают копии, — ловушка запомнится.
  4. Три задания прошлых лет на жадный набор — чтобы не перепутать формы на экзамене.

Как изменились остальные номера — в обзоре ЕГЭ по информатике 2027: что изменилось; демозадание в контексте варианта — в разборе демоверсии 2027. Чтение больших файлов и словари сумм — в разборе задания 17; второе задание на два балла, тоже с файлом, — задание 27.

Короткий итог

Задание 26 в 2027 году — журнал сервера: один проход по строкам в порядке файла, копия до записи запроса, словарь сумм по клиентам, отсечка по времени строкой и сумма двух наибольших копий. На демо — 7040 52204; забытая отсечка даёт 52205, копия с новым запросом — 57094, сортировка — что угодно, кроме ответа.

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

Попробовать бесплатно →

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

Что изменилось в задании 26 в 2027 году

Сюжет и приём. В демо 2026 составляли рейтинг продуктов по срокам хранения — там все числа сначала сортировали. В 2027 — журнал работы сервера: строки «время, клиент, объём» уже стоят по времени, и их проходят по порядку, моделируя заполнение раздела памяти и резервные копии. Сортировать журнал нельзя — порядок строк и есть порядок событий. Ответ по-прежнему два числа, 2 балла, высокий уровень, 35 минут.

Как устроен файл в задании 26

Первая строка — N и K: количество записей и вместимость раздела в Кбайт. Дальше N строк вида «ЧЧ:ММ:СС C S»: время регистрации запроса, идентификатор клиента и объём данных в Кбайт, причём S < K. В демо 15 001 запись, K = 26 107, время от 00:00:05 до 23:59:59.

Когда сервер делает резервную копию

Когда очередной запрос не помещается в раздел: если накопленный объём плюс объём запроса больше K, сервер копирует всё накопленное, освобождает раздел и только потом записывает запрос. Объём копии — то, что лежало в разделе до этого запроса, он никогда не больше K. Остаток в разделе в конце дня копией не считается.

Что спрашивают в демоверсии 2027

Два числа: идентификатор клиента, с которого передан наибольший общий объём данных, и сумму объёмов двух наибольших резервных копий, созданных не позднее 11:59:59. Ответ 7040 52204. Без отсечки по времени получилось бы 52205, а если считать копию вместе с новым запросом — 57094.

Как сравнивать время

Прямо как строки: «ЧЧ:ММ:СС» с ведущими нулями и двоеточиями сравнивается правильно, moment <= "11:59:59" работает. Переводить в секунды можно, но не обязательно; int("11:59:59") упадёт.

Как решать задание 26 на Python

Один проход по журналу: накопитель acc, список объёмов копий и словарь сумм по клиентам. На каждой строке: если acc + size > limit — записать acc в копии (если время не позднее отсечки) и обнулить накопитель; затем acc += size и прибавить объём клиенту. В конце — клиент с наибольшей суммой и сумма двух наибольших копий. Код в статье печатает 7040 52204.

Почему нельзя отсортировать журнал

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

Сколько баллов стоит задание 26 и как распределить время

2 первичных балла, 35 минут по спецификации. Проход по журналу — десять минут с готовым шаблоном; остальное время — на проверку типового примера из условия (там ответ 303 220 000) и на перечитывание вопроса: отсечка по времени и порядок чисел в ответе.

Не пишешь код — или пишешь неуверенно?

Для этого у нас есть курс «Python для ЕГЭ» — язык с нуля ровно в том объёме, который нужен на экзамене: 83 урока, код запускается прямо в уроке, упражнения проверяются автоматически, после каждой темы — реальные задания банка. Первые два модуля открыты бесплатно — можно понять, идёт ли у тебя код, до оплаты.

Посмотреть программу курса →

А задания ЕГЭ можно решать в тренажёре уже сейчас: 7 дней полного доступа бесплатно.