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

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

    №26 по КИМ

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

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

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

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

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

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

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

    26 (4).txt

    Ответ

    Ответ:

    Решение

    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):
        if not V: return -1
        ma = -1
        for i, x in enumerate(V):
            for v0, v1 in zip(V[i:], V[i+1:]):
                if v1 - v0 <= 9:
                    ma = max(ma, v1 - x + 1)
                else: break
        return ma
     
    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 и тренируйся в любое время и в любом месте!

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