Задача к ЕГЭ по информатике на тему «Поиск мест на поле (билеты, саженцы, матрицы)» №2

Организация купила для своих сотрудников все места в нескольких подряд идущих рядах на концертной площадке. Известно, какие места уже распределены между сотрудниками. Найдите ряд с наибольшим номером, в котором есть пять соседних мест, таких что слева и справа от них в том же ряду места уже распределены (заняты). Гарантируется, что есть хотя бы один ряд, удовлетворяющий условию.

Входные данные представлены в файле 26_4.txt следующим образом. В первой строке входного файла находится одно число: N – количество занятых мест (натуральное число, не превышающее 10 000). В следующих N строках находятся пары чисел: ряд и место выкупленного билета, не превышающие 100 000.

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

Решение (Excel/LibreOffice)

Откроем файл в электронной таблице и удалим первую строку. С помощью настраиваемой сортировки отсортируем файл следующим образом: Столбец А по убыванию и столбец В по возрастанию. В ячейку C1  запишем 0 и в ячейку C2  запишем формулу:

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

С помощью сочетания клавиш CT RL + F  откроем меню поиска в столбце С найдём первую 1. Как видим, между местами 698 и 704 ряда 1928 есть 5 свободных мест. В ответ указываем номер ряда и номера мест в порядке возрастания.

Решение (Python)

f = open(’26_4.txt’)
n = int(f.readline())
a = [] # список, в котором будут записаны координаты занятых мест
for line in f:
    numbers = list(map(int, line.split()))
    a.append(numbers)
a = sorted(a) # сортируем по возрастанию значения в столбцах
for i in range(len(a)-1):
    # если ряд двух рядом стоящих в списке мест совпадает и между ними есть 5 свободных мест
    if (a[i][0] == a[i+1][0]) and (a[i+1][1] - a[i][1] == 6):
        print(a[i], a[i+1])

Ответ: 1928 699 700 701 702 703
Оцените статью
Я решу все!