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

Информатика·Обработка целочисленной информации·11 класс

В высокотехнологичном центре кибербезопасности круглые сутки работают

Условие

В высокотехнологичном центре кибербезопасности круглые сутки работают автоматические системы анализа трафика. Каждое сканирование сети имеет время запуска и завершения (в миллисекундах от начала суток). Считается, что в момент запуска и в момент завершения сканирование всё ещё активно.Необходимо проанализировать работу центра за сутки и определить интервалы (непрерывные промежутки времени), когда выполнялось хотя бы одно сканирование сети.Входные данные:Задание 26В первой строке указано натуральное число N (N<100000)( N < 100 000 ) — количество сканирований за сутки.Следующие N строк содержат пары чисел: время начала и время окончания каждого сканирования (неотрицательные числа, меньшие 86 400 000). Запишите в ответе два натуральных числа: сначала найденное количество периодов, когда выполнялось хотя бы одно сканирование, а затем их суммарную длительность (в мс).Типовой пример организации данных во входном файле:5 10 10020 120130 170150 200250 400При таких исходных данных промежутков хотя бы с одним сканированием было 3: с 10 до 120 мс, с 130 до 200 мс и с 250 до 400 мс. Их суммарная длительность равна(120 - 10) + (200 - 130) + (400 - 250) = 330. Ответ для примера: 3; 330. Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов. Ответ:

Ответ

35986023641

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

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

    Решение. Приведём решение на языке Python. f = open('26.txt')n = int(f.readline())end_time = 86400000time = sorted([int(i) for i in s.split()] for s in f)time.append([end_time,end_time])end = 0time_no_activity =[]for sec in time: if end >= sec[0]: end = max(end, sec[1]) else: time_no_activity.append(sec[0]-end) end = sec[1]len_time_no_activity_start_and_stop = 0if time[0][0]!= 0: len_time_no_activity_start_and_stop += 1if time[-1][1]!= 0: len_time_no_activity_start_and_stop += 1# Количество перодов активности больше количества периодов без активности на 1, минус количество периодов без активности (если есть!)# до старта активности с начала суток и период после активности до завершения суток)#Суммарное время периода активности равно разнице всего времени - время без активностиprint(len(time_no_activity) + 1 - len_time_no_activity_start_and_stop, end_time - sum (time_no_activity)) Ответ: 359

Осталось ещё 1 шаг — откроются после входа:

  • Шаг 2
Получить полное решение

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

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