Тема 26. Обработка целочисленной информации с использованием сортировки

26.09 Прочие прототипы

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка целочисленной информации с использованием сортировки
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#81228

Администратор игрового клуба N, работающего с 05:00 до 23:00 заполняет расписание посещений клиентов на завтра. Отсчёт компьютеров начинается с 1. В течении дня клиенты звонили администратору и говорили, в какой период они хотят прийти и на сколько они хотят забронировать компьютер. Если в данный период все компьютеры заняты, то администратор не записывает данного человека в расписание на следующий день. На следующую минуту после освобождения компьютера происходит уборка и проверка оборудования. Данные процедуры длятся 10 минут. На следующую минуту после уборки и проверки следующий клиент может занять данный компьютер.

Входные данные: В первой строке файла находится натуральное число K, не превышающее 5000 – количество клиентов. Во второй строке файла записано натуральное число N – количество компьютеров в игровом клубе. В последующих строках записаны по два числа, не превышающих 1440 в каждой строке: время, когда клиент хочет прийти в игровой клуб и на сколько минут он хочет забронировать компьютер.

Запишите в ответ два числа через пробел: количество клиентов, которые смогли забронировать компьютер и количество человек, которое сидело за 7-ым компьютером.

Вложения к задаче
Показать ответ и решение
file = open(’26_5__3cjxc.txt’)
count_client = int(file.readline()) #количество клиентов
count_computers = int(file.readline()) #количество компьютеров
array_clients = list(list(map(int,i.split())) for i in file) #считываем время прихода клиента и
                                                             #желаемое время брони

#для каждого компьютера инициализируем нулями все свободное время
computers = [[0 for i in range(1440)] for j in range(count_computers)]
count = [0]*count_computers #количество игроков, сидевших за каждым компьюетром

for start,duration in array_clients: #пробегаемся по списку клиентов
    for i in range(len(computers)): #пробегаемся по списку компьютеров
        #если время прихода клиента попадает в диапазон от 5 утра до 23 вечера и все желаемое время
         #компьютер будет свободен
        if 60*23 >= start + duration and start >= 60 * 5 and sum(computers[i][start:start+duration+12]) == 0:
            #если ни одна минута не занята в протяжении от начала до конца сеанса
            count[i] += 1
            #пробегаемся циклом по только что забронированному времении
            for time in range(start,start+duration+12):
                computers[i][time] = 1 #инициализируем все единицами, то есть помечаем, что занято
            break

print(sum(count),count[6])

Ответ: 215 6

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!