ex exxam.ru
Задания22 из 27
01 Графы: схема дорог и таблица расстояний 02 Логика: фрагмент таблицы истинности, порядок столбцов 03 Базы данных: поиск информации в связанных таблицах 04 Кодирование: условие Фано и двоичное дерево кода 05 Двоичная запись числа: алгоритм строит новое число 06 Исполнитель Черепаха: движение и подсчёт точек 07 Информационный объём: звук и изображения 08 Подсчёт слов: лексикографический список и перебор 09 Электронные таблицы: подсчёт строк по условию 10 Текстовый документ: поиск сочетаний букв по условию 11 Объём данных: мощность алфавита и кодирование 12 Исполнитель МТ (машина на ленте): чтение программы 13 IP-адреса и маски сетей TCP/IP 14 Арифметические выражения и системы счисления 15 Логика: истинность выражения с отрезками и предикатами 16 Рекурсивные функции: чтение и счёт по формулам 17 Обработка целочисленной информации: поиск пар в файле 18 Динамическое программирование: Робот-сборщик монет 19 Игры: выигрышная стратегия первым ходом (куча) 20 Игры: победа Пети своим вторым ходом (куча) 21 Игры: победа Вани первым или вторым ходом (куча) 22 Многопоточные вычисления: максимальное число одновременных процессов текущее23 Динамика: количество программ исполнителя 24 Обработка символьных строк: поиск подстроки по условию 25 Перебор чисел: делители и сумма M 26 Задание 26 нужны файлы27 Задание 27 нужны файлы
22
1 балл демоверсия ЕГЭ-2026 тренажёр

Многопоточные вычисления: максимальное число одновременных процессов

Задание 22 · Билет 2 · ЕГЭ по информатике

Билеты — задания в формате экзамена: открытый сборник или тренировочные по образцу. Это тренировочные материалы, а не официальные КИМ. Ответы пересчитаны и сверены.

Условие

В файле содержится информация о 800 процессах. Для каждого процесса в отдельной строке записаны два натуральных числа: время начала и время окончания. Процесс выполняется начиная с момента начала включительно и до момента окончания не включая его. Процессы выполняются параллельно.

Скачать файл (.txt)

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

Вопрос. Определите максимальное число процессов, которые выполнялись одновременно. В ответе укажите одно целое число.

Попробуйте программой

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

Решите программой на Python

в браузере

Напишите свой код, который найдёт ответ, и нажмите «Выполнить». Горячая клавиша запуска: Ctrl/⌘ + Enter.

Файл задачи уже в песочнице: task22-2-processy.txt — читайте через open('task22-2-processy.txt').

Результат
Здесь появится вывод print().
Не знаешь, как решать?

Потренируйся на процессах: тренажёр соберёт новый набор интервалов и попросит найти максимум одновременно выполнявшихся процессов.

Открыть тренажёр

Решение

Решение

открыто шагов: 5 из 5
1 Шаг 1
Способ 1 — перебор по моментам времени. Самое раннее начало — 6, самое позднее окончание — 5313. Идём t по единице и для каждого момента считаем процессы с условием «начало ≤ t < окончание». Всего 5308 моментов × 800 процессов.
2 Шаг 2
Максимум перебора достигается в момент 3513: одновременно выполняется 47 процессов. Ответ способа 1 — 47.
3 Шаг 3
Способ 2 — метод событий. Собираем по каждому процессу события «начало» (+1) и «окончание» (−1), сортируем 1600 событий (при равенстве окончание раньше начала) и находим максимум счётчика — снова 47.
4 Шаг 4
Короткие программы для обоих способов читают файл task22-2-processy.txt (он уже в песочнице). В разделе решения два кода, каждый можно вставить в песочницу кнопкой.
5 Шаг 5
Оба способа дают 47. Ответ: 47.

Способ 1 · перебор по моментам времени

data = [tuple(map(int, line.split())) for line in open('task22-2-processy.txt')]   # пары (начало, окончание)

lo = min(s for s, e in data)   # самое раннее начало
hi = max(e for s, e in data)   # самое позднее окончание

best = 0
for t in range(lo, hi + 1):        # идём по времени по единице
    cur = 0
    for s, e in data:              # сколько процессов охватывают момент t
        if s <= t < e:             # начало включительно, окончание — нет
            cur += 1
    best = max(best, cur)

print(best)    # максимальное число одновременных процессов

Способ 2 · метод событий

data = [tuple(map(int, line.split())) for line in open('task22-2-processy.txt')]   # пары (начало, окончание)

events = []                  # события: (время, изменение)
for s, e in data:
    events.append((s, 1))    # в момент начала процессов на 1 больше
    events.append((e, -1))   # в момент окончания — на 1 меньше

events.sort()                # при равном времени окончание (−1) раньше начала (+1)

cur = 0        # сколько процессов выполняется сейчас
best = 0       # максимум за всё время
for t, d in events:
    cur += d
    best = max(best, cur)

print(best)    # максимальное число одновременных процессов

Правильный ответ этого билета: 47
Проверка: независимый пересчёт по прилагаемому файлу даёт 47 (перебор по моментам и метод событий сходятся; см. tools/task22/verify.py).

Теория и другие билеты

Разбор с нуля, типовые ошибки, частые вопросы и все билеты задания 22 — на странице задания.

Задание 22: теория и другие билеты Практикум