ALEXMATH

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

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

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

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

Задание 26. Информатика. ЕГЭ 2026. Статград. 23.10.2025

Просмотры: 1694
Изменено: 24 октября 2025

В одном городе есть более \(100\) жилых домов. Все дома пронумерованы, начиная с единицы. Управляющая компания получила заявки на капитальный ремонт от жителей домов. В заявке указан номер дома и номер подъезда, где требуется ремонт, при этом каждой заявке присваивается уникальный идентификатор – натуральное число, не превышающее \(1~000~000.\) На один и тот же подъезд могут быть заявки сразу от нескольких жителей.

Определите номер дома, который имеет наибольшее количество подряд идущих подъездов с заявками на капитальный ремонт. Если есть несколько домов с одинаковым максимальным количеством подъездов, необходимо выбрать тот дом, у которого наименьший искомый подъезд имеет максимальный номер заявки.

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

В первой строке входного файла находится натуральное число \(N\) \( (N \leqslant 200~000)\) – количество полученных заявок на капитальный ремонт. Следующие \(N\) строк содержат три числа: номер заявки, номер дома и номер подъезда (все числа натуральные, не превышающие \(1~000~000).\)

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

Запишите в ответе два натуральных числа: сначала номер дома с максимальным количеством подряд идущих подъездов, затем номер первого найденного подъезда из максимального числа подряд идущих подъездов в этом доме.

Решение:

Python


f = open('26.txt')
N = int(f.readline())

# houses - словарь, ключём является номер дома, значение - словарь, у которого ключ - номер подъезда
# а значение, номер заявки на этот подъезд
houses = {}
for line in f:
    z, d, p = map(int, line.split())
    if houses.get(d) is None:
        houses[d] = {p: z}
    else:
        if houses[d].get(p) is None:
            houses[d][p] = z
        else:
            houses[d][p] = max(houses[d][p], z)
max_z = 0       # в этой переменной будем хранить максимальное кодичество подряд идущих подъездов с заявками на ремонт
max_h = []      # список пар: первое число - наименьший номер подъезда из подряд идущих, второе число - номер заявки на этот подъезд
for d, v in houses.items():
    m = 1       # текущее значение подряд идущих подъездов
    mm = 1      # максимальное число подряд идущих подъездов для данного дома
    pod = sorted(list(v.keys())) # список подъездов
    st = pod[0]  # текущее значение наименьшего подъезда при сканировании
    stm = pod[0]  # наименьший номер подъезда в максимальной группе подряд идущих подъездов
    for p in range(1, len(pod)):  # сканируем весь массив
        if pod[p] == pod[p-1] + 1:
            m += 1
        else:
            if mm < m:
                mm = m
                stm = st
            st = pod[p]
            m = 1
    if mm < m:  # обработка хвоста массива
        mm = m
        stm = st
    if mm > max_z:
        max_z = mm
        max_h = [(d, stm)]
    elif mm == max_z:
        max_h.append((d, stm))
res = [(d, p, houses[d][p]) for d, p in max_h]
res.sort(key=lambda r: r[2], reverse=True) # сортировка по номеру заявки. максимальный номер на первом месте
print(res[0][0], res[0][1])

Ответ: \(171 \,\, 701\)

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

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

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

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

Новое видео

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

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

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

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

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