Задание 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:01 | 101 | 20 000 | да | — | 20 000 |
| 03:03:03 | 202 | 110 000 | да (130 000) | — | 130 000 |
| 05:05:05 | 101 | 90 000 | нет (220 000) | 130 000 | 90 000 |
| 07:07:07 | 303 | 62 000 | нет (152 000) | 90 000 | 62 000 |
| 10:10:10 | 101 | 48 000 | да | — | 110 000 |
| 15:15:15 | 202 | 12 000 | да | — | 122 000 |
| 21:21:21 | 303 | 120 000 | нет (242 000) | 122 000 | 120 000 |
| 23:23:23 | 404 | 134 000 | нет (254 000) | 120 000 | 134 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:00 | 11 | 400 | — | 400 |
| 08:40:00 | 22 | 500 | — | 900 |
| 09:05:00 | 11 | 300 | 900 | 300 |
| 09:30:00 | 33 | 400 | — | 700 |
| 11:50:00 | 22 | 350 | 700 | 350 |
| 12:30:00 | 33 | 630 | — | 980 |
| 13:00:00 | 11 | 100 | 980 | 100 |
Три копии: 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 минут — почти в три раза больше. Запас стоит потратить на проверку типового примера: он ловит и копию с новым запросом, и забытую отсечку.
Как тренироваться
- Реши типовой пример из условия руками, строка за строкой, как в таблице выше, — потом прогони код и сверь копии.
- Пять заданий с разными отсечками и K — проверяй, что сумма двух копий не больше 2K.
- Одно задание специально реши с сортировкой и посмотри, как уезжают копии, — ловушка запомнится.
- Три задания прошлых лет на жадный набор — чтобы не перепутать формы на экзамене.
Как изменились остальные номера — в обзоре ЕГЭ по информатике 2027: что изменилось; демозадание в контексте варианта — в разборе демоверсии 2027. Чтение больших файлов и словари сумм — в разборе задания 17; второе задание на два балла, тоже с файлом, — задание 27.
Короткий итог
Задание 26 в 2027 году — журнал сервера: один проход по строкам в порядке файла, копия до записи запроса, словарь сумм по клиентам, отсечка по времени строкой и сумма двух наибольших копий. На демо — 7040 52204; забытая отсечка даёт 52205, копия с новым запросом — 57094, сортировка — что угодно, кроме ответа.
Задания 26 в форме 2027 года с автопроверкой есть в TuteMe: журналы на несколько тысяч строк, и в каждом отсечка подобрана так, что без неё ответ другой.