Задача #1505

Сортировка

Уровень ЕГЭ

(М. Ишимов) Входной файл содержит информацию о заказах клиентов на доставку продуктов. В каждом заказе известно время создания заказа (в минутах от начала суток) и длительность доставки от пункта сбора заказов до клиента (совпадает с длительностью возвращения курьера в пункт сбора заказов). Доставкой занимаются K курьеров, каждый может доставлять из пункта сбора заказов за раз только один заказ.
Каждый заказ обрабатывается в порядке очереди следующим образом:

– если в момент поступления заказа все курьеры заняты, он будет выполнен с задержкой первым освободившимся курьером;
– сбор заказа происходит в течение 2 мин при наличии свободного курьера;
– курьер доставляет заказ до клиента и после выполненного заказа курьер возвращается в пункт сбора заказов;
– с момента прихода в пункт сбора курьер может приступить к доставке следующего заказа.
Определите, сколько заказов в течение 24 ч будут выполнены с задержкой и в какую минуту завершится последний за сутки заказ, выполненный без задержки.

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

В первой строке входного файла находится два натуральных числа K(K1000) и N(N1000) – соответственно количество курьеров и количество заказов.
Каждая из следующих N строк содержит два натуральных числа: указанное в заявке время создания (в минутах от начала суток) и необходимое время для доставки соответствующего заказа, каждое из которых не превышает 1440.
Запишите в ответе два числа: количество заказов, выполненные с задержкой, и минута завершения последнего за сутки заказа, выполенный без задержки.
Типовой пример организации данных во входном файле
2 5
675 90
716 90
723 72
818 62
1394 45
При таких исходных данных третий и четвёртый заказы будут выполнены с задержкой. Второй заказ будет последним за сутки выполненным заказом без задержки и завершится в 808 мин.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.

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

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

Ответ

112
760

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

f = open('26.txt')
k, n = [int(c) for c in f.readline().split()]
a = []
for s in f:
st, time = [int(c) for c in s.split()]
a += [(st, time)]
a.sort()
delivery = [0] * k
res1 = 0
for st, time in a:
delivery.sort()
if st >= delivery[0]:
starts_in = st + 2
ends_in = starts_in + time
delivery[0] = ends_in + time
if ends_in <= 1440:
last = ends_in
else:
starts_in = delivery[0] + 2
ends_in = starts_in + time
delivery[0] = ends_in + time
if ends_in <= 1440:
res1 += 1
print(res1, last)
Быстрый переход
Перейти к задаче