В центр обработки информации приходят запросы на сервер, имеющий ограниченный запас памяти. Для каждого запроса дана время регистрации, идентификатор клиентского устройства и объём данных. Если в какой-то момент приходит информация, а свободного объёма памяти сервера не хватает для сохранения этой информации, сервер делает резервную копию и отправляет её в облако, после чего память сервера обнуляется, новая информация добавляется на сервер.
Входные данные
Первая строка входного файла содержит два натуральных числа: N — количество строк, K — вместимость специального раздела памяти сервера в Кб. Каждая из следующих N строк содержит информацию об одном выполненном запросе: время регистрации в формате ЧЧ : ММ : СС и два натуральных числа: — идентификатор клиентского устройства, S — объем данных запроса в Кб.
Выходные данные
Два целых положительных числа: сначала идентификатор клиентского устройства, который отправил наибольший объём запросов, а затем максимальный суммарный объём двух резервных копий, которые отправлялись в облако до 12 часов дня.
Приведём решение на языке Python.
f = open('26-2.txt')
n, k = map(int, f.readline().split())
d = {}
mem = 0
a = []
for _ in range(n):
t, id, s = f.readline().split()
id, s = int(id), int(s)
if id not in d:
d[id] = 0
d[id] += s
if mem + s > k:
if t < '12:00:00':
a.append(mem)
mem = 0
else:
mem += s
mx = max(d.values())
client = min(i for i in d if d[i] == mx)
a.sort(reverse=True)
print(client, a[0] + a[1])

