Информационная система выполняет сложные запросы. Для анализа нагрузки системы и её колебаний в течение суток в протокол занесли все запросы, выполненные в течение одного календарного дня. Для каждого запроса указаны время начала и время конца обработки.
Входные данные.
Первая строка входного файла содержит целое число N (N ≤ 1 000 000) — общее количество запросов. Каждая из следующих
Например, если t1 = 10 и t 2 = 15, то обработка запроса началась через
Определите наибольшее количество запросов, которые одновременно находились в обработке в период с 15:00 до 21:00, и общую продолжительность времени (в секундах) в этот период, в течение которого выполнялось такое максимальное количество запросов. Запросы, выполнение которых попало в указанный интервал частично, тоже следует учитывать.
В ответе запишите два целых числа: сначала максимальное количество одновременно выполняемых запросов, затем общую продолжительность времени, в течение которого выполнялось такое количество запросов.
Ответ:
Приведем решение на языке Python.
f = open('26.txt')
n = f.readline()
sytki = [0]*86400
start = 15*60*60
end = 21*60*60
zapros = 0
for s in f:
t1,t2 = map(int,s.split())
for i in range(t1,t2):
sytki[i] += 1
zapros = max(sytki[start:end+1])
time_zapros = sytki[start:end+1].count(zapros)
print(zapros, time_zapros)
Ответ: 4973&4.
Приведем решение Бориса Савельева на языке Python.
f = open('26.txt')
n = int(f.readline())
a = [0]*86400
for i in range(0,n):
x,y=map(int,f.readline().split())
if x<=15*60*60 and y<=21*60*60:
for t in range(15*60*60,y):
a[t]=a[t]+1
elif x >= 15 * 60 * 60 and y <= 21 * 60 * 60:
for t in range(x, y):
a[t] = a[t] + 1
elif x >= 15 * 60 * 60 and y >= 21 * 60 * 60:
for t in range(x, 21*60*60):
a[t] = a[t] + 1
elif x <= 15 * 60 * 60 and y >= 21 * 60 * 60:
for t in range(15 * 60 * 60, 21*60*60):
a[t] = a[t] + 1
print(max(a),a.count(max(a)))

