Задача #4268

Сортировка

Уровень ЕГЭ

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

Входные данные
Первая строка входного файла (журнал работы сервера) содержит два натуральных числа: N (N < 1 000 000) – количество строк в журнале и K (K < 1 000 000) – вместимость специального раздела памяти сервера в Кбайт. Каждая из следующих N строк содержит информацию об одном выполненном запросе: время регистрации в формате ЧЧ:ММ:СС (часы, минуты, секунды) и два натуральных числа: C (C < 1 000 000) – идентификатор клиентского устройства, S (S < K) – объем данных запроса в Кбайт.
Выходные данные
Два целых положительных числа: сначала идентификатор клиентского устройства, с которого на сервер был передан наибольший суммарный объём данных не позднее 11:59:59, а также сумму объёмов двух наибольших резервных копий специального раздела (в Кбайт).

Типовой пример организации данных во входном файле
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
При таких исходных данных резервное копирование специального раздела выполняется четыре раза: 05:05:05 (в объёме 130 000 Кбайт), в 07:07:07 (в объёме 90 000 Кбайт), в 21:21:21 (в объёме 122 000 Кбайт) и в 23:23:23 (в объёме 120000 Кбайт).
Всего на сервер передано 596000 Кбайт данных: 158 000, 122 000, 182 000 и 134 000 Кбайт от клиентов с идентификаторами
101, 202, 303 и 404 соответственно. Ответ для приведённого примера: 101 252000.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

Файлы к задаче

Ответ
Новая
Войдите, чтобы история ответов и статистика сохранялись.
Решение Нажми, чтобы открыть Нажми, чтобы скрыть

Ответ

9517
46436

Видео по задаче

f = open('26.txt')

N, K = [int(x) for x in f.readline().split()]

a = []

for s in f:
t, idd, r = s.split()
idd, r = int(idd), int(r)
a.append([t,idd,r])

a.sort()

d = [0]*1_000_000

backup = []
server = 0
for t,idd,r in a:
if int(t[:2])<12:
d[idd]+=r
server += r
if server>K:
backup.append(server-r)
server = r

backup.sort()

print(d.index(max(d)),backup[-1]+backup[-2])
Быстрый переход
Перейти к задаче