Задания
Версия для печати и копирования в MS Word
Тип 26 № 68288
i

Ин­фор­ма­ци­он­ная си­сте­ма вы­пол­ня­ет слож­ные за­про­сы. Для ана­ли­за на­груз­ки си­сте­мы и её ко­ле­ба­ний в те­че­ние суток в про­то­кол за­нес­ли все за­про­сы, вы­пол­нен­ные в те­че­ние од­но­го ка­лен­дар­но­го дня. Для каж­до­го за­про­са ука­за­ны время на­ча­ла и время конца об­ра­бот­ки.

За­да­ние 26

Вход­ные дан­ные.

Пер­вая стро­ка вход­но­го файла со­дер­жит целое число N (N ≤ 1 000 000)  — общее ко­ли­че­ство за­про­сов. Каж­дая из сле­ду­ю­щих N строк опи­сы­ва­ет один за­прос и со­дер­жит 2 целых числа: время на­ча­ла об­ра­бот­ки за­про­са t1 и время окон­ча­ния его об­ра­бот­ки t2. Время задаётся в се­кун­дах от на­ча­ла суток.

На­при­мер, если t1  =  10 и t 2  =  15, то об­ра­бот­ка за­про­са на­ча­лась через 10 се­кунд после на­ча­ла суток и за­вер­ши­лась через 15 се­кунд после на­ча­ла суток, то есть дли­лась 5 се­кунд. Га­ран­ти­ру­ет­ся, что об­ра­бот­ка всех за­про­сов на­чи­на­ет­ся и за­кан­чи­ва­ет­ся в пре­де­лах одних суток, то есть 0 ≤ t1 < t2 ≤ 86400.

Опре­де­ли­те наи­боль­шее ко­ли­че­ство за­про­сов, ко­то­рые од­но­вре­мен­но на­хо­ди­лись в об­ра­бот­ке в пе­ри­од с 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)))


Аналоги к заданию № 68259: 68288 Все