Определите, сколько клиентов будет обслужено в течение дня в окне номер
Условие
В отделении банка работают два окна для обслуживания клиентов. Некоторые услуги могут быть оказаны только при обращении в определённое окно, некоторые — при обращении в любое окно. Клиент входит в отделение и встаёт в очередь к тому окну, которое оказывает необходимую ему услугу. Если услуга может быть оказана в любом окне, клиент выбирает то, в очереди к которому в данный момент меньше людей. Если очереди в оба окна одинаковые, клиент выбирает окно с меньшим номером. При этом если в очереди к выбранному окну уже стоит 14 или более человек (включая человека, которого обслуживают в данный момент), пришедший клиент сразу уходит.
Если момент завершения обслуживания одного или нескольких клиентов совпадает с моментом прихода нового клиента, то можно считать, что новый клиент пришёл после того, как обслуживание ранее пришедшего клиента завершилось и очередь сократилась.
Задание 26Входные данные.
Первая строка входного файла содержит целое число N (N ≤ 1000) — общее количество клиентов, пришедших в отделение за один рабочий день. Каждая из следующих N строк описывает одного клиента и содержит 3 целых числа: время прихода клиента в отделение (количество минут с начала рабочего дня), время, необходимое для обслуживания данного клиента, и номер окна, в которое ему необходимо обратиться (0 означает, что клиент может обратиться в любое окно). Гарантируется, что никакие два клиента не приходят одновременно.
Определите, сколько клиентов будет обслужено в течение дня в окне номер 2 и сколько клиентов покинет отделение из-за слишком больших очередей.В ответе запишите два целых числа: сначала количество клиентов, обслуженных в окне номер 2, затем количество необслуженных клиентов. Ответ:
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Решение. Приведем решение на языке Python.f = open('26.txt')n = int(f.readline())a = []for i in f: prixod, dlitel, N_okna = [int(x) for x in i.split()] a.append([prixod, dlitel, N_okna])a.sort()okno_1 = []okno_2 = []count = 0usli = 0for prixod, dlitel, N_okna in a: while len(okno_1) > 0 and okno_1[0] <= prixod: del okno_1[0] while len(okno_2) > 0 and okno_2[0] <= prixod: del okno_2[0] if N_okna == 1 or (N_okna != 1 and N_okna != 2 and len(okno_1) <= len(okno_2)): if okno_1 == []: okno_1.append(prixod + dlitel) elif len(okno_1) < 14: okno_1.append(okno_1[-1] + dlitel) else: usli += 1 else: if okno_2 == []: count += 1 okno_2.append(prixod + dlitel) elif len(okno_2) < 14: okno_2.append(okno_2[-1] + dlitel) count += 1 else: usli += 1print(count, usli)
Осталось ещё 2 шага
Приведем решение Юрия Красильникова на языке…
if len(q[win]) >= 14: cwin[0] += 1 else…
Бесплатно · займёт минуту