Задача к ЕГЭ по информатике на тему «задачи под вебы» №34

Задача с сайта https://kpolyakov.spb.ru/

В лесополосе осуществляется посадка деревьев: саженцы высаживают рядами на одинаковом расстоянии. Спустя некоторое время с помощью аэросъемки выясняют, какие саженцы прижились. Необходимо определить ряд с максимальным номером, в котором есть подряд ровно K  неприжившихся саженцев при условии, что справа и слева от них саженцы прижились. В ответе запишите сначала наибольший номер ряда, затем наименьший номер неприжившегося саженца.

Входные данные представлены в файле 26-79.txt следующим образом. В первой строке записаны два числа: N  – количество занятых мест (натуральное число, не превышающее 10 000) и K  – длина цепочки неприжившихся саженцев, которую нужно найти. Каждая из следующих N  строк содержит сведения об одном прижившемся саженце – два натуральных числа, не превышающих 100000: номер ряда и номер саженца в ряду.

Пример входного файла:

6 3

40 30

40 34

50 125

50 129

50 64

50 68

В примере требуется найти 3 подряд идущих неприжившихся саженца. Ответ: 50 65.

Решение в Excel:

Открываем файл в Excel  → Данные → Текст по столбцам с разделителями – точка с запятой.

Переносим значения из первой строки вправо и удаляем ее.

Снова переходим в Данные → Сортировка:

PIC

Посчитаем количество неприжившихся саженцев в ряду между прижившимися. В столбце C  напишем формулу

= ЕСЛ И(A1 = A2;B2 − B1 − 1;0)

и растянем до конца вниз.

В столбце D  выпишем номер подходящих рядов по формуле

= ЕС ЛИ (C1 = 11;A1;0)

Выделим столбец D  и увидим в низу экрана максимальное значение – 2261.

С помощью фильтров находим строку с этим значением (строка 2224).

Номер прижившегося саженца – 5086 → номер неприжившегося саженца – 5087.

f = open(’26-79.txt’)
n, k = map(int, f.readline().split())
# Сортировка по ряду и номеру саженца
a = sorted([list(map(int, i.split())) for i in f])

for i in range(1, len(a)-1):
# Если номер ряда совпадает и между прижившимися ровно k неприжившихся
    if (a[i][0] == a[i+1][0]) and (a[i+1][1]-a[i][1]-1 == k):
# Выводим номер ряда и номер прижившихся саженцев
        print(a[i], a[i+1])

Ответ: 2261 5087
Оцените статью
Я решу все!