ALEXMATH

Информатика. ЕГЭ

Задания для подготовки

Задачи разных лет из реальных экзаменов, демо-вариантов, сборников задач и других источников

Перейти к заданиям

Задание 26. Информатика. ЕГЭ. Шастин. 7.05.2025

Просмотры: 931
Изменено: 11 мая 2025

(Л. Шастин) Частная клиника работает круглосуточно, в режиме 24/7. В течение суток в клинике проводятся медицинские приёмы, каждый из которых характеризуется временем начала и окончания (в миллисекундах, прошедших с начала суток). Считается, что в миллисекунды начала и конца приема он ещё идет. Необходимо проанализировать загруженность врачей за сутки и определить периоды простоя, то есть такие отрезки времени, когда ни один приём не проходил.

Входной файл содержит время начала и конца каждого приема (в мс) в течение суток. Определите, сколько периодов простоя было в течение суток, и укажите их суммарную длительность (в мс).

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

В первой строке входного файла находится натуральное число \(N\) \((N < 100~000)\) — количество приемов, проведенных за сутки. Следующие \(N\) строк содержат пары чисел, обозначающих соответственно время начала и время конца приёма (все числа натуральные, меньшие \(86400000).\)

Запишите в ответе два натуральных числа: сначала найденное количество периодов простоя, а затем их суммарную длительность (в мс).

Типовой пример организации данных во входном файле

\(6\)
\(10 \,\, 50\)
\(100 \,\, 150\)
\(110 \,\, 155\)
\(120 \,\, 160\)
\(130 \,\, 170\)
\(151 \,\, 170\)

При таких исходных данных и длительности работы клиники в \(200\) мс было три периода простоя: в отрезки времени с \(0\) по \(9\) мс, с \(51\) по \(99\) мс и с \(171\) по \(199\) мс. Их суммарная длительность равна \((10 - 0) + (100 - 51) + (200 - 171) = 88.\) Ответ для примера: \(3 \,\, 88.\) Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.

Решение:

Python


fd = open('26.txt')
N = int(fd.readline())
intervals = []
for _ in range(N):
    beg, end = map(int, fd.readline().split())
    intervals.append([beg, end])
intervals.sort()
q, prost = 0, 0
beg, end = intervals[0][0], intervals[0][1]
if beg > 0:
    q += 1
    prost += beg
for p in range(1, len(intervals)):
    if intervals[p][0] - end > 1:
        q += 1
        prost += intervals[p][0] - end - 1
    beg, end = intervals[p][0], max(end, intervals[p][1])
if end  < 86_400_000 - 1:
    q += 1
    prost += 86_400_000 - 1 - end
print(q, prost)

Ответ: \(36 \,\, 35834\)

Обсуждение задания

Здесь пока нет ни одного комментария. Будьте первым!

kege1
kege2
kege3
Новый тренажёр-эмулятор
Станции КЕГЭ

Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене.

Новое видео

Методы решения задания 16 ЕГЭ по Информатике «Вычисление рекуррентных выражений»

Поддержать автора сайта!

Поддержите автора сайта, если материалы, размещённые здесь, оказались вам полезны.

Совершая донат, вы соглашаетесь с Условиями использования

Расписание пробников Статграда в 2026/27 учебном году