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

Вход­ной файл со­дер­жит за­яв­ки на про­ве­де­ние ме­ро­при­я­тий в кон­фе­ренц-⁠зале в те­че­ние од­но­го дня. В каж­дой за­яв­ке ука­за­но время на­ча­ла и время окон­ча­ния ме­ро­при­я­тия в ми­ну­тах от на­ча­ла суток. Если время про­ве­де­ния двух или более ме­ро­при­я­тий пе­ре­се­ка­ет­ся, то про­ве­сти можно не более од­но­го из них. Между окон­ча­ни­ем од­но­го ме­ро­при­я­тия и на­ча­лом сле­ду­ю­ще­го не­об­хо­дим пе­ре­рыв не менее 15 минут.

Опре­де­ли­те, какое мак­си­маль­ное ко­ли­че­ство ме­ро­при­я­тий можно про­ве­сти в кон­фе­ренц-⁠зале в этот день и каким при этом может быть мак­си­маль­но воз­мож­ный пе­ре­рыв между двумя по­след­ни­ми ме­ро­при­я­ти­я­ми.

За­да­ние 26

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

Пер­вая стро­ка вход­но­го файла со­дер­жит целое число N (N ≤ 1000)  — общее ко­ли­че­ство за­явок. Каж­дая из сле­ду­ю­щих N строк опи­сы­ва­ет одну за­яв­ку и со­дер­жит 2 целых числа, обо­зна­ча­ю­щих время на­ча­ла и время окон­ча­ния ме­ро­при­я­тия в ми­ну­тах с на­ча­ла суток. Все числа не пре­вос­хо­дят 1440, вто­рое число в каж­дой стро­ке боль­ше пер­во­го.

В от­ве­те за­пи­ши­те два целых числа: сна­ча­ла мак­си­маль­ное ко­ли­че­ство ме­ро­при­я­тий, ко­то­рые можно про­ве­сти в этот день, затем  — мак­си­маль­но воз­мож­ный при таком ко­ли­че­стве ме­ро­при­я­тий пе­ре­рыв между двумя по­след­ни­ми ме­ро­при­я­ти­я­ми.

 

Ответ:

Спрятать решение

Ре­ше­ние.

При­ве­дем ре­ше­ние на языке Python.

f = open('26.txt').readlines()[1:]

f = sorted([list(map(int, i.split())) for i in f], key=lambda x: x[1])

otv1 = [f[0]]

for x in f[1:]:

if x[0] > otv1[-1][1] + 15:

otv1 += [x]

f = list(filter(lambda x: x[0] > otv1[-2][1] + 15, f))

print(len(otv1), max(i[0] - otv1[-2][1] for i in f))

 

Ответ: 18 29.