Присоединиться

11 класс·высокий уровень

Определите, сколько клиентов будет обслужено в течение дня в окне номер

Условие

В отделении банка работают два окна для обслуживания клиентов. Некоторые услуги могут быть оказаны только при обращении в определённое окно, некоторые — при обращении в любое окно. Клиент входит в отделение и встаёт в очередь к тому окну, которое оказывает необходимую ему услугу. Если услуга может быть оказана в любом окне, клиент выбирает то, в очереди к которому в данный момент меньше людей. Если очереди в оба окна одинаковые, клиент выбирает окно с меньшим номером. При этом если в очереди к выбранному окну уже стоит 12 или более человек (включая человека, которого обслуживают в данный момент), пришедший клиент сразу уходит.

Если момент завершения обслуживания одного или нескольких клиентов совпадает с моментом прихода нового клиента, то можно считать, что новый клиент пришёл после того, как обслуживание ранее пришедшего клиента завершилось и очередь сократилась.

Задание 26Входные данные.

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

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

Ответ

Ответ и полный разбор откроются после входа

Посмотреть ответ

Решение по шагам

  1. Как рассуждать

    Решение. Приведем решение на языке 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) count += 1 elif len(okno_1) < 12: okno_1.append(okno_1[-1] + dlitel) count +=1 else: usli += 1 else: if okno_2 == []: okno_2.append(prixod + dlitel) elif len(okno_2) < 12: okno_2.append(okno_2[-1] + dlitel) else: usli += 1print(count, usli)

Осталось ещё 2 шага

  1. Приведём решение Юрия Красильникова на языке…

  2. # выбираем окно if len(q[w]) >= 12: k[0] +…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Обработка целочисленной информации»

Определите, сколько клиентов будет обслужено в течение дня в окне номер — решение с объяснением | Lom Ai