Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Тренировки Пробники Статистика Карточки Учебник Об экзамене Учительская
  • Тренажёр заданий ЕГЭ
  • Тренажёр ЕГЭ по Информатике
  • Список заданий №26
  • Задание №26
  • Задание №74462 ЕГЭ Информатике

    Условие задания #74462

    №26 по КИМ

    При проведении эксперимента заряженные частицы попадают на чувствительный экран, представляющий из себя матрицу размером 100 000 на 100 000 точек. При попадании каждой частицы на экран в протоколе фиксируются координаты попадания: номер ряда (целое число от 1 до 100 000) и номер позиции в ряду (целое число от 1 до 100 000).

    Точка экрана, в которую попала хотя бы одна частица, считается светлой, точка, в которую ни одна частица не попала,  — тёмной.

    При анализе результатов эксперимента рассматривают линии. Линией называют группу светлых точек, расположенных в одном ряду подряд, то есть без тёмных точек между ними. Линия должна содержать не менее 3 светлых точек, слева и справа от линии должна быть тёмная точка или край экрана.

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

     

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

    Первая строка входного файла содержит целое число N  — общее количество частиц, попавших на экран. Каждая из следующих N строк содержит 2 целых числа: номер ряда и номер позиции в ряду.

    В ответе запишите два целых числа: сначала максимальное количество линий в одном ряду, затем  — номер ряда, в котором это количество встречается.

    26 (5).txt

    Ответ

    Ответ:

    7 97924

    Решение

    f = open('26.txt').readlines()[1:]
    Sl = {i: [] for i in range(1, 10**5 + 1)}
     
    for i in f:
        ind, v = map(int, i.split())
        Sl[ind] += [v]
     
    def func(v):
        st = ''
        for x, y in zip(v, v[1:]):
            st += '*' if x + 1 == y else '* '
        return len([1 for s in (st + '*').split() if len(s) >= 3])
     
    Sl = {i: func(sorted(set(v))) for i, v in Sl.items()}
    print((t:=max(Sl.values())),\
           list(Sl.keys())[::-1][list(Sl.values())[::-1].index(t)])

    Понятно ли решение?

    Похожие задания

    15
    Задание №46720Задание №46721Задание №46752Задание №51424Задание №46719Задание №32183Задание №46642Задание №32179Задание №41214Задание №46643Задание №56108Задание №41209Задание №41208Задание №36692Задание №46645
    Бесплатно

    Решай задачи ЕГЭ в приложении

    Скачивай наш Тренажер ЕГЭ на iPhone или Android и тренируйся в любое время и в любом месте!

    Саша — ассистент в телеграмме