РУҚА
26

Решение: Обработка журнала сервера

ЕГЭ · Информатика · Задание 26 · Массивы и строки
ВысокаяФИПИ0AF4A5Короткий ответ≈ 15 минутРазбор в 5 шагов
Условие

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

В первой строке входного файла находятся натуральные числа $N$ и $K$: количество записей журнала и вместимость раздела памяти в Кбайт. В каждой из следующих $N$ строк записаны время в формате ЧЧ:ММ:СС, идентификатор клиента $C$ и объём данных $S$ в Кбайт. Выведите два числа: сначала идентификатор клиента, затем сумму объёмов двух наибольших подходящих резервных копий.

Открыть задачу и решить самому
Дальше ответЕсли ещё решаете — начните с подсказок: они ведут к ответу, но не выдают его.
К подсказкам

Решение по шагам

5 шагов
1

Для каждого идентификатора клиента поддерживаем суммарный объём переданных данных. Это можно сделать словарём, не храня весь журнал.

$$total[C] \mathrel{+}= S$$
2

Поддерживаем объём данных, накопленных в специальном разделе. Если очередной запрос не помещается, текущий объём становится резервной копией, после чего раздел освобождается.

$$current + S > K \Rightarrow backups.append(current),\ current = 0$$
3

После освобождения раздела добавляем объём текущего запроса. Так моделируется последовательная обработка журнала.

$$current \mathrel{+}= S$$
4

Из словаря выбираем идентификатор с наибольшей суммой. Среди резервных копий, созданных не позднее 11:59:59, выбираем две наибольшие и складываем их объёмы.

Времена можно сравнивать как строки формата ЧЧ:ММ:СС или перевести в секунды. Так как записи идут в хронологическом порядке, момент создания копии определяется временем запроса, перед которым раздел пришлось освободить.

Ответ

Идентификатор клиента с максимальным суммарным объёмом и сумма двух наибольших резервных копий до 11:59:59; численные значения определяются данными прилагаемого файла.

Этот ответ получен в разборе, но не сверен с официальным ключом из банка — проверьте выкладки, прежде чем заучивать результат.

Где здесь ошибаются

Создают резервную копию после добавления запроса, хотя копирование выполняется перед добавлением, если запрос не помещается.

Забывают обнулить объём раздела после создания резервной копии.

Учитывают резервные копии после 11:59:59.

Ищут двух клиентов с наибольшими объёмами вместо двух наибольших резервных копий.

Хранят все записи журнала и используют слишком много памяти при ограничении $N < 1\,000\,000$.

Закрепить приёмВ теме «Массивы и строки» ещё 237 задач — с ответом и таким же разбором.
Тренироваться

Как решать задание 26 ЕГЭ, информатика

Разбор этой задачи разложен на 5 шагов: видно, откуда берётся каждое число и где теряется балл. Ответ приведён рядом с выкладками, а не вместо них.

Задача из темы «Массивы и строки»: в ней 238 задач, и у каждой есть такой же разбор. Регистрация не нужна.