Организация купила для своих сотрудников все места в нескольких подряд идущих рядах на концертной площадке. Известно, какие места уже распределены между сотрудниками. Найдите ряд с наибольшим номером, в котором есть пять соседних мест, таких что слева и справа от них в том же ряду места уже распределены (заняты). Гарантируется, что есть хотя бы один ряд, удовлетворяющий условию.
Входные данные представлены в файле 26_4.txt следующим образом. В первой строке входного файла находится одно число: N – количество занятых мест (натуральное число, не превышающее 10 000). В следующих N строках находятся пары чисел: ряд и место выкупленного билета, не превышающие 100 000.
В ответе запишите шесть целых чисел через пробел: сначала номер максимального ряда, а затем номера соседних пяти мест в нем в порядке возрастания.
Решение (Excel/LibreOffice)
Откроем файл в электронной таблице и удалим первую строку. С помощью настраиваемой сортировки отсортируем файл следующим образом: Столбец А по убыванию и столбец В по возрастанию. В ячейку запишем 0 и в ячейку
запишем формулу:
=ЕСЛИ(И(A1=A2;B1+6=B2);1;0)
С помощью сочетания клавиш откроем меню поиска в столбце С найдём первую 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])