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

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

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

Условие

Система наблюдения ежеминутно фиксирует вход и выход сотрудников из офиса (в минутах, прошедших от начала суток). Считается, что в моменты фиксации входа и выхода сотрудник находится в офисе. Нулевая минута соответствует моменту начала рабочего дня в офисе, который длится 24 ч в сутки без перерыва.

Менеджер компании анализирует данные системы наблюдения за прошедшие сутки, и выявляет непересекающиеся отрезки времени наибольшей длины, в течение которых число сотрудников, находящихся в офисе, не изменялось.

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

Задание 26Входные данныеВ первой строке входного файла находится натуральное число N (N ≤ 100 000) — количество сотрудников компании.

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

Типовой пример организации данных во входном файле510 1070230 1070240 10701070 14001071 1400При таких исходных данных в течение суток было 7 промежутков времени, когда число сотрудников не менялось: (0, 10), (10, 230), (230, 240), (240, 1070), (1070, 1071), (1071, 1400), (1400, 1440). Длительность предпоследнего такого отрезка 329. Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов. Ответ:

Ответ

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

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

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

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

    Решение. Приведём решение Юрия Красильникова на языке Python. f=open('26.txt')f.readline()times=[0]*1440for s in f: t1,t2=map(int, s.split()) for t in range(t1,t2+1): times[t]+=1dlit=[1]smena=[]for i in range(1,len(times)): if times[i-1]==times[i]: dlit[-1]+=1 else: dlit.append(1)print(len(dlit),dlit[-2])

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

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

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

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

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