Тема 26. Обработка целочисленной информации с использованием сортировки

26.05 Поиск мест на поле (билеты, саженцы, матрицы)

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка целочисленной информации с использованием сортировки
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#24010

Задание выполняется с использованием прилагаемых файлов

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

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

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

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

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

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

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

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

7

1 2

2 3

3 6

2 4

1 3

2 5

2 4

При таких исходных данных имеется три группы светлых точек: в позициях 2− 3  ряда 1  , в позициях 3 − 5  ряда 2  и в позиции 6  ряда 3  . Самая длинная группа длины 3  находится во 2  ряду. Ответ: 3 2  .

Вложения к задаче
Показать ответ и решение

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Воспользуемся настраиваемой сортировкой, на первый уровень расположим столбец A  (по возрастанию), на второй - столбец B  (по возрастанию). Выделим полностью столбцы A и B , перейдём в раздел "Данные"и нажимаем на инструмент "Удалить дубликаты в появившемся окне выбираем "Выделить все"и нажимаем "ОК"(это удалит частицы, которые были по ошибке сняты дважды). В ячейку C1  запишем 1  , а в C2  - формулу =ЕСЛИ(И(A2=A1;B2-1=B1);C1+1;1), скопируем её на все свободные клеточки этого столбца. Находим максимальную длину группы точек в столбце C  и номер ряда, в котором эта группа встречается. Выписываем этот номер и наименьший номер ряда, где нашлись обозначенные в задаче точки.

Решение 2 (Python)

f = open(’Задание_26__lood__rjlq.txt’)
n = int(f.readline())
a = [[0] * 10001 for j in range(10001)] # создаём пустую матрицу
maxim = 0 # максимальная длина
row = 0 # ряд
for i in range(n):
    x, y = [int(s) for s in f.readline().split()] # считывание текущей строки
    a[x][y] = 1 # помечаем, что данный пиксель на матрице занят
for i in range(10001):
    counter = 0 # счётчик подряд идущих светлых точек в ряду
    for j in range(10001):
        if a[i][j] == 1:
            counter += 1
        else:
            counter = 0
        if counter > maxim: # если счётчик больше максимума
            maxim = counter # перезаписываем максимум
            row = i # записываем ряд
print(maxim, row)

Ответ: 2 29

Ошибка.
Попробуйте повторить позже

Задача 2#24427

Задание выполняется с использованием прилагаемых файлов

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

Входные и выходные данные

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

Пример входных данных:

7

4 1

3 5

4 6

4 7

3 6

3 10

5 8

При таких исходных данных ответ должен содержать 2  числа: 3  — минимальный номер ряда, и 9  — наибольший номер места из выбранной четверки в 3  ряду (была выбрана четверка с номерами 6,7,8,9  ).

Вложения к задаче
Показать ответ и решение

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ. Запомним первое число и удалим его. Скопируем все числа в Excel или LibreOffice. В разделе Главная ⇒ Сортировка и фильтр ⇒ Настраиваемая сортировка делаем сортировку столбцов:

PIC

В ячейке C2  записываем формулу:

=ЕСЛИ(И(A2=A1;B2=B1+5);"НАШЁЛ";0),

В ячейке C3  записываем формулу:

=ЕСЛИ(И(A3=A2;ИЛИ(B3=B2+5;B3=B1+5));"НАШЁЛ";0),

В ячейке C4  записываем формулу:

=ЕСЛИ(И(A4=A3;ИЛИ(B4=B3+5;B4=B2+5;B4=B1+5));"НАШЁЛ";0),

В ячейке C5  записываем формулу:

=ЕСЛИ(И(A5=A4;ИЛИ(B5=B4+5;B5=B3+5;B5=B2+5;B5=B1+5));"НАШЁЛ";0),

В ячейке C6  записываем формулу:

=ЕСЛИ(И(A6=A5;ИЛИ(B6=B5+5;B6=B4+5;B6=B3+5;B6=B2+5;B6=B1+5));"НАШЁЛ";0)

и растягиваем её на диапазон [C6 : C10000]  . Наводим курсор на столбец C  , нажимаем на Главная ⇒ Сортировка и фильтр ⇒ Фильтр. Сортируем столбец C  по критерию "НАШЁЛ". Видим, что наименьший номер ряда — 2  , а наибольшее место — 74  .

Решение 2 (Python)

f = open(’Задание_26__mixo__t7qt.txt’)
n = int(f.readline())
max_row = 0 # максимальный ряд в файле
max_seat = 0 # максимальное место в ряду в файле
for i in range(n):
    x, y = map(int, f.readline().split()) # считываем текущую строку
    max_row = max(max_row, x)
    max_seat = max(max_seat, y)
a = [] # матрица занятых и пустых мест
for i in range(max_row+1): # проход до значения максимального ряда в файле
    a.append([0]*(max_seat+1)) # добавление мест
f.close()
f = open(’Задание_26__mixo__t7qt.txt’)
n = int(f.readline())
for i in range(n):
    x, y = map(int, f.readline().split())
    a[x][y] = 1 # отмечаем, что место - занято
maxim = 0
for i in range(max_row+1): # проход по рядам
    for j in reversed(range(max_seat)): # проход по местам ряда
        if a[i][j] == 1 and a[i][j-5] == 1:
            maxim = j - 1
            break
    if maxim != 0:
        print(i, maxim)
        break

Ответ: 2 74

Ошибка.
Попробуйте повторить позже

Задача 3#25111

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

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

В первой строке входного файла находится одно число: N  — количество занятых мест (натуральное число, не превышающее 10000  ). В следующих N  строках находятся пары чисел: ряд и место выкупленного билета, не превышающие 100000  .

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

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

9

5 5

5 9

16 9

16 3

16 6

20 23

20 28

20 36

20 40

В данном примере есть следующие свободные места, удовлетворяющие условию: 6− 8  в ряду 5  , а также 37− 39  в ряду 20  . Выбираем наименьший номер ряда: 5  и средний номер места: 7  . В ответе нужно указать: 5 7  .

Вложения к задаче
Показать ответ и решение

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Воспользуемся настраиваемой сортировкой, на первый уровень расположим столбец A  (по возрастанию), на второй - столбец B  (по возрастанию). В ячейку C1  запишем 1  , а в C2  - формулу =ЕСЛИ(И(A2=A1;B2-4=B1);1;0), скопируем её на все свободные клеточки этого столбца. Далее находим первый ряд, в котором появилась 1 – это 136. Остается только среди этого ряда найти последнюю единичку, она находится в строке с местом 299. Следовательно среднее место среди этих свободных – 297.

Решение 2 (Python)

f = open(’26.txt’)
n = int(f.readline())
max_ryad = 0 # максимальный ряд в файле
max_mesto = 0 # максимальный место в ряду в файле
for i in range(n):
    x, y = map(int, f.readline().split())
    max_ryad = max(max_ryad, x)
    max_mesto = max(max_mesto, y)
a = [] # матрица занятых и пустых мест
for i in range(max_ryad + 1): # проход до максимального значения ряда в файле
    a.append([0] * (max_mesto + 1)) # добавление ряда мест
f.close()
f = open(’26.txt’)
n = int(f.readline())
for i in range(n):
    x, y = map(int, f.readline().split())
    a[x][y] = 1 # отмечаем, что данное место - занято
maxim = 0
for i in range(max_ryad + 1):
    for j in reversed(range(max_mesto)):
     # проверка, что между двумя занятыми местами есть 3 свободных места
        if a[i][j] == 1 and a[i][j - 4] == 1 and a[i][j - 3] == 0 and \
                a[i][j - 2] == 0 and a[i][j - 1] == 0:
            maxim = j - 2
            break
    if maxim != 0:
        print(i, maxim)
        break

Ответ: 136 297

Ошибка.
Попробуйте повторить позже

Задача 4#26693

В лесополосе осуществляется посадка деревьев. Причем саженцы высаживают рядами на одинаковом расстоянии.

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

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

В первой строке входного файла находится число N  — количество занятых мест (натуральное число, не превышающее 10000  ). Каждая из следующих N  строк содержит два натуральных числа, не превышающих 100000  : номер ряда и номер занятого места.

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

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

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

7

40 30

40 34

50 125

50 129

50 64

50 68

50 70

Ответ для примера (при поиске 3  подряд идущих неприжившихся саженцах): 50 65

Вложения к задаче
Показать ответ и решение

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ. Запомним первое число и удалим его. Скопируем все числа в Excel. В разделе Главная      ⇒ Сортировка и фильтр ⇒ Настраиваемая сортировка делаем сортировку столбцов:

PIC

В ячейке D2  записываем формулу =ЕСЛИ(И(A2=A1;B2=B1+8);"НАШЁЛ";0) и растягиваем её на диапазоне [D2 : D10000]  . Наводим курсор на столбец D  , нажимаем на Главная ⇒ Сортировка и фильтр ⇒ Фильтр. Сортируем столбец D  по критерию "НАШЁЛ". Получаем единственный номер ряда — 1536  и наименьший номер неприжившегося саженца — 141− 7 = 134  .

Решение 2 (Python)

f = open(’Задание_26__o4nj__rs6l.txt’)
n = int(f.readline())

a = [] # список координат прижившихся саженцев
for i in range(n):
    x, y = [int(_) for _ in f.readline().split()] # считывание текущей строки
    a.append([x, y])
a.sort()

ans = [0, 0]

for i in range(n - 1): # проход по всем координатам прижившихся саженцев
    # если ряд двух рядом стоящих в списке саженцев совпадает и при этом между ними есть 7 свободных мест
    if a[i][0] == a[i + 1][0] and a[i][1] == a[i + 1][1] - 8:
        row = a[i][0] # вычисляем ряд
        place = a[i][1] + 1 # вычисляем минимальное свободное место между двумя саженцами
        if row > ans[0]:
            ans[0] = row
            ans[1] = place

print(*ans)

Ответ: 1536 134

Ошибка.
Попробуйте повторить позже

Задача 5#26988

Задание выполняется с использованием прилагаемых файлов

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

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

В первой строке входного файла находится одно число: N  — количество занятых мест (натуральное число, не превышающее 10000  ). В следующих N  строках находятся пары чисел: ряд и место выкупленного билета (числа не превышают 100000  ).

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

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

6

50 12

50 15

60 157

60 160

60 22

60 25

Для данного примера ответом будет являться пара чисел 60  и 23  .

Вложения к задаче
Показать ответ и решение

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Воспользуемся настраиваемой сортировкой, на первый уровень расположим столбец A  (по убыванию), на второй - столбец B  (по возрастанию). В ячейку C1  запишем 1  , а в C2  - формулу =ЕСЛИ(И(A1=A2;B2=B1+3);C1+1;1), скопируем её на все свободные клеточки этого столбца. Находим максимальное значение номера ряда, где нашлись обозначенные в задаче места, и среди них находим то, что имеет наименьший номер места. Выписываем этот номер и наименьший номер места из найденных в этом ряду подходящих пар.

Решение 2 (Python)

f = open(’26__t72u.txt’)
n = int(f.readline())

a = []# список координат занятых мест саженцев
for i in range(n):
    x, y = [int(_) for _ in f.readline().split()] # считывание текущей строки
    a.append([x, y])
a.sort()

ans = [0, 0]

for i in range(n - 1): # проход по всем координатам занятых мест
    # если ряд двух рядом стоящих в списке занятых мест совпадает и при этом между ними есть 2 свободных места
    if a[i][0] == a[i + 1][0] and a[i][1] == a[i + 1][1] - 3:
        row = a[i][0] # вычисляем ряд
        seat = a[i][1] + 1 # вычисляем минимальное свободное место между двумя креслами
        if row > ans[0]:
            ans[0] = row
            ans[1] = seat

print(*ans)

Ответ: 8631 7311

Ошибка.
Попробуйте повторить позже

Задача 6#28008

Задание выполняется с использованием прилагаемых файлов

В лесополосе осуществляется посадка деревьев. Причем деревья высаживают рядами на одинаковом расстоянии. Между соседними деревьями в одном ряду расстояние 10  метров.

Через какое-то время осуществляется аэросъемка, в результате которой определяется, какие деревья прижились. Для успешного перекрестного опыления необходимо, чтобы дерево было на расстоянии не более 20  метров от прижившегося дерева, иначе оно не будет плодоносить. При аэросъемке была совершена ошибка — одно и то же дерево могло быть снято дважды. Определите, какое минимальное количество деревьев нужно посадить, чтобы все деревья могли плодоносить, и номер ряда, в котором необходимо посадить максимальное количество деревьев. Если таких рядов несколько, нужно найти номер первого из них.

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

В первой строке входного файла находится число N(1 ≤ N ≤ 10000)  — количество занятых мест. Каждая из следующих N  строк содержит два натуральных числа, не превышающих 1000  : номер ряда и номер занятого места.

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

Два целых неотрицательных числа: минимальное количество деревьев которое нужно посадить, чтобы все деревья могли плодоносить, и минимальный номер ряда, в котором необходимо посадить максимальное количество деревьев.

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

7

4 2

7 5

4 5

5 1

7 1

5 5

7 10

В этом случае достаточно посадить 4  дерева в позициях (4,3)  , (5,3)  , (7,3)  и (7,8)  . Наибольшее количество деревьев нужно посадить в 7-м ряду. Ответ: 4 7  .

Вложения к задаче
Показать ответ и решение

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Удалим значение количества занятых мест. Воспользуемся настраиваемой сортировкой, на первый уровень расположим столбец A  (по возрастанию), на второй - столбец B  (по возрастанию). Выделим полностью столбцы A  и B  , перейдём в раздел Данные и нажимаем на инструмент Удалить дубликаты, в появившемся окне выбираем Выделить все и нажимаем ОК (это удалит деревья, которые были по ошибке сняты дважды).

PIC

Добавляем пустую строку перед самой первой (нажимаем правой кнопкой мыши на строку 1  и выбираем Вставить).
Введём обозначения каждого столбца, в которые будем записывать формулы: столбец C  Можно ли опылить текущее дерево предыдущим?, столбец D  Можно ли опылить текущее дерево следующим?, столбец E  Можно ли опылить текущее дерево дополнительно высаженным до него деревом?, столбец F  Высаживаем дополнительное дерево, столбец G  Было ли высажено дерево?, столбец H  Счётчик количества деревьев в каждом ряду.

PIC

В ячейку C3  запишем формулу =И(A2=A3;B3-B2<=2), в D3  — =И(A3=A4;B4-B3<=2), в E3  - =И(A3=A2;B3-F2<=2), в F 3  — =ЕСЛИ(ИЛИ(C3:E3);-1000000;B3+2), в G3  — =ЕСЛИ(F3>0;1;0). Выделим все эти ячейки, скопируем и вставим на все столбцы C : G  . Считаем общее количество высаженных деревьев — =СУММ(G3:G9944).
В ячейку H3  запишем 1, а в H4  — формулу =ЕСЛИ(A3=A4;H3+G4;1), скопируем её и вставим на все оставшиеся клеточки столбца H  . Находим в этом столбце максимальное значение, равное 19. Теперь найдём ряд, в котором необходимо посадить это максимальное количество деревьев.

Решение 2 (Python)

f = open(’Задание 26.txt’)
n = int(f.readline())
max_place = 0
max_row = 0
for i in range(n):
    a, b = map(int, f.readline().split())
    max_row = max(a, max_row)
    max_place = max(b, max_place)
f.close()
f = open(’Задание 26.txt’)
n = int(f.readline())
arr = []
for i in range(max_row + 1):
    arr.append([0]*(max_place + 3))
for i in range(n):
    a, b = map(int, f.readline().split())
    arr[a][b] = 1
counter = 0
maxim = 0
maxim_row = 0
for i in range(max_row + 1):
    temp = 0
    for j in range(max_place + 1):
        if arr[i][j] == 1:
            if arr[i][j+2] == 0 and arr[i][j-2] == 0 and arr[i][j+1] == 0 and arr[i][j-1] == 0:
                arr[i][j+2] = 1
                counter += 1
                temp += 1
                if maxim < temp:
                    maxim = temp
                    maxim_row = i
print(counter, maxim_row)

Ответ: 9313 319

Ошибка.
Попробуйте повторить позже

Задача 7#28228

Задание выполняется с использованием прилагаемых файлов

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

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

В первой строке входного файла находится одно число: N  — количество занятых мест (натуральное число, не превышающее 10000  ). В следующих N  строках находятся пары чисел: ряд и место выкупленного билета, не превышающие 100000  .

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

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

9

5 5

5 9

16 9

16 3

16 6

20 23

20 28

20 36

20 40

В данном примере есть следующие свободные места, удовлетворяющие условию: 6− 8  в ряду 5  , а также 37− 39  в ряду 20  . Выбираем наименьший номер ряда: 5  и средний номер места: 7  . В ответе нужно указать: 5 7  .

Вложения к задаче
Показать ответ и решение

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Воспользуемся настраиваемой сортировкой, на первый уровень расположим столбец A  (по возрастанию), на второй - столбец B  (по возрастанию). В ячейку C1  запишем 1  , а в C2  - формулу =ЕСЛИ(И(A2=A1;B2-4=B1);C1+1;1), скопируем её на все свободные клеточки этого столбца. Находим максимальное значение в столбце C  . Выписываем в ответ минимальный номер ряда, где встречается это значение, и максимальный средний номер среди имеющихся троек в данном ряду.

Решение 2 (Python)

f = open(’task_2__pza7__taen.txt’)
n = int(f.readline())

mass = [] # список координат занятых мест
for i in range(n):
    x, y = [int(_) for _ in f.readline().split()] # считывание текущей строки
    mass.append([x, y])
mass.sort()


# проход по занятым местам
for i in range(n-1):
    # если места расположены на одном ряду и между ними есть 3 свободных места
    if mass[i][0] == mass[i+1][0] and mass[i][1] + 4 == mass[i+1][1]:
        print(mass[i][0],mass[i][1]+2)

Ответ: 1784 3573

Ошибка.
Попробуйте повторить позже

Задача 8#28822

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

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

В первой строке входного файла находится одно число: N  — количество занятых мест (натуральное число, не превышающее 10000  ). В следующих N  строках находятся пары чисел: ряд и место выкупленного билета, не превышающие 100000.

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

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

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

10

5 5

5 9

5 6

16 9

16 3

16 6

20 23

20 28

20 35

20 40

В данном примере есть следующие свободные места, удовлетворяющие условию: 7  и 8  в ряду 5  , 4  и 5  в ряду      16  , а также 7  и 8  в ряду 16  . Выбираем наименьший номер ряда: 5  и наибольший номер места: 8  . В ответе нужно указать: 5 8  .

Вложения к задаче
Показать ответ и решение

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Воспользуемся настраиваемой сортировкой, на первый уровень расположим столбец A  , на второй столбец B  . В ячейке C1  запишем 1  , а в C2  - формулу =ЕСЛИ(И(A1=A2;(B2-B1)=3);1;0), скопируем её на все свободные клеточки этого столбца. Находим первую встреченную единичку, записываем в ответ найденные значения номеров ряда и места (последнее свободное место - это место на 1  меньше того, которое записано в найденной строке), соответствующие данной единице.

Решение 2 (Python)

f = open(’Задание_26__qjvc__t6o2.txt’)
n = int(f.readline())

mass = [] # список координат занятых мест
for i in range(n):
    x, y = [int(_) for _ in f.readline().split()] # считывание текущей строки
    mass.append([x, y])
mass.sort()

# проход по занятым местам
for i in range(n-1):
    # если места расположены на одном ряду и между ними есть 2 свободных места
    if mass[i][0] == mass[i+1][0] and mass[i][1] + 3 == mass[i+1][1]:
        print(mass[i][0],mass[i][1]+2)
        break

Ответ: 4005 238

Ошибка.
Попробуйте повторить позже

Задача 9#45968

Задание выполняется с использованием прилагаемых файлов

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

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

В первой строке входного файла находится одно число: N  — количество занятых мест (натуральное число, не превышающее 10000  ). В следующих N  строках находятся пары чисел: ряд и место выкупленного билета, не превышающие 100000  .

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

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

9

5 5

5 9

16 4

16 3

16 5

20 23

20 28

20 36

20 40

В данном примере условию удовлетворяют 16  ряд и 4  -е место. В ответе нужно указать: 16 4  .

Вложения к задаче
Показать ответ и решение

Решение (Excel/LibreOffice)
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Воспользуемся настраиваемой сортировкой, на первый уровень расположим столбец A  (по убыванию), на второй - столбец B  (по возрастанию). В ячейку C1  запишем формулу =ЕСЛИ(И(A1=A3;B1+2=B3);1;0), скопируем её на все свободные клеточки этого столбца. Находим первую единицу в столбце C  . Выписываем в ответ максимальный номер ряда и номер места.

Решение (Python)

f = open(’26__14es9.txt’)
n = int(f.readline())

mass = [] # список координат занятых мест
for i in range(n):
    x, y = [int(_) for _ in f.readline().split()] # считывание текущей строки
    mass.append([x, y])
mass.sort()


# проход по занятым местам
for i in range(n-2):
    # если есть такое место, у которого соседнее левое место и соседнее правое - заняты
    if mass[i][0] == mass[i+1][0] == mass[i+2][0] and mass[i][1] + 1 == mass[i+1][1] and mass[i+1][1] + 1 == mass[i+2][1]:
        print(mass[i+1][0],mass[i+1][1])

Ответ: 9990 6317

Ошибка.
Попробуйте повторить позже

Задача 10#55491

Организация купила для своих сотрудников все места в нескольких подряд идущих рядах на концертной площадке. Известно, какие места уже распределены между сотрудниками. Найдите ряд с наибольшим номером, в котором есть два соседних места, таких что слева и справа от них в том же ряду места уже распределены (заняты). Гарантируется, что есть хотя бы один ряд, удовлетворяющий условию. В ответе запишите два целых числа: номер ряда и наибольший номер места из найденных в этом ряду подходящих пар.
Входные данные.
В первой строке входного файла 9.txt находится одно число: N — количество занятых мест (натуральное число, не превышающее 10000). В следующих N строках находятся пары чисел: ряд и место выкупленного билета (числа не превышают 100000).
В ответе запишите два целых числа через пробел: сначала максимальный номер ряда, где нашлись обозначенные в задаче места и максимальный номер места.
Пример входного файла:
6
50 12
50 15
60 157
60 160
60 22
60 25
Для данного примера ответом будет являться пара чисел 60 и 159.

Вложения к задаче
Показать ответ и решение

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

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

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

Сочетанием клавиш Ctrl+F откроем меню поиска и в столбце С найдем первую единицу. Как видно, между местами 225 и 228 ряда 20164 есть два свободных места. В ответ нужно указать максимальное место этой пары. Ответ: 20164 227

Решение (Python)

f = open(’D:/9.txt’)
n = int(f.readline())

a = []
for i in range(n):
    a.append(list(map(int, f.readline().split())))
a = sorted(a)

mr = 0 # Наибольшее значение ряда
mm = 0 # Наибольшее значение места
for i in range(n-1):
    # Во втором выражении разность должна быть равна 3,
    # чтобы понять, что между двумя местами есть два свободных места
    if a[i][0] == a[i+1][0] and abs(a[i][1] - a[i+1][1]) == 3:
        mr = a[i][0]
        # Номер второго занятого места минус 1
        # это наибольший номер свободного места из пары
        # (т.е. находящийся левее от второго занятого места из пары)
        mm = a[i+1][1]-1
print(mr, mm)

Ответ: 20164 227

Ошибка.
Попробуйте повторить позже

Задача 11#56333

Задание выполняется с использованием прилагаемых файлов

При проведении эксперимента заряженные частицы попадают на чувствительный экран, представляющий из себя матрицу размером 10000  на 10000  точек. При попадании каждой частицы на экран в протоколе фиксируются координаты попадания: номер ряда (целое число от 1  до 10000  ) и номер позиции в ряду (целое число от 1  до 10000  ). Точка экрана, в которую попала хотя бы одна частица, считается светлой, точка, в которую ни одна частица не попала, — тёмной. При анализе результатов эксперимента рассматривают группы светлых точек, расположенных в одном ряду подряд, то есть без тёмных точек между ними. Вам необходимо по заданному протоколу определить максимальную длину такой группы и номер ряда, в котором эта группа встречается. Если таких рядов несколько, укажите минимально возможный номер.

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

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

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

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

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

7

1 2

2 3

3 6

2 4

1 3

2 5

2 4

При таких исходных данных имеется три группы светлых точек: в позициях 2− 3  ряда 1  , в позициях 3 − 5  ряда 2  и в позиции 6  ряда 3  . Самая длинная группа длины 3  находится во 2  ряду. Ответ: 3 2  .

Вложения к задаче
Показать ответ и решение

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Воспользуемся настраиваемой сортировкой, на первый уровень расположим столбец A  (по возрастанию), на второй - столбец B  (по возрастанию). Выделим полностью столбцы A и B , перейдём в раздел "Данные"и нажимаем на инструмент "Удалить дубликаты в появившемся окне выбираем "Выделить все"и нажимаем "ОК"(это удалит частицы, которые были по ошибке сняты дважды). В ячейку C1  запишем 1  , а в C2  - формулу =ЕСЛИ(И(A2=A1;B2-B1=1);C1+1;1), скопируем её на все свободные клеточки этого столбца. Находим максимальную длину группы точек в столбце C  и номер ряда, в котором эта группа встречается. Выписываем этот номер и наименьший номер ряда, где нашлись обозначенные в задаче точки.

Решение 2 (Python)

f = open(’26__1r21f.txt’)
n = int(f.readline())
a = [[0] * 10001 for j in range(10001)] # матрица, в которой 1 будут указаны занятые пиксели, 0 - свободные пиксели
maxim = 0
row = 0
for i in range(n):
    x, y = [int(s) for s in f.readline().split()]
    a[x][y] = 1 # отмечаем, что данный пиксель занят
for i in range(10001):
    counter = 0 # счетчик подряд идущих занятых пикселей
    for j in range(10001):
        if a[i][j] == 1:
            counter += 1
        else:
            counter = 0
        if counter > maxim: # если счётчик больше максимума
            maxim = counter # перезаписываем максимум
            row = i # записываем ряд
print(maxim, row)

Ответ: 10 2786

Ошибка.
Попробуйте повторить позже

Задача 12#56463

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

Входные данные.
В первой строке входного файла 26.txt находится одно число: N — количество занятых мест (натуральное число, не превышающее 10 000). В следующих N строках находятся пары чисел: ряд и место выкупленного билета (числа не превышают 100 000).
В ответе запишите два целых числа без пробела: сначала максимальный номер ряда, где нашлись обозначенные в задаче места и минимальный номер места.
Пример входного файла:
6
50 11
50 15
60 156
60 160
60 21
60 25
Для данного примера ответом будет являться пара чисел 60 и 22.

Вложения к задаче
Показать ответ и решение

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

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

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

Сочетанием клавиш CTRL  + F  откроем меню поиска и в столбце С найдём первую 1. Как видим, между местами 75 и 79 ряда 25081 есть три места. По условию, в ответ нужно указать минимальное место из трёх свободных. Ответ: 2508176

Решение (Python)

f = open(’26__1jdz6.txt’)
n = int(f.readline())

a = [] # список координат занятых мест
for i in range(n):
    x, y = [int(_) for _ in f.readline().split()] # считывание текущей строки
    a.append([x, y])
a.sort()

ans = [0, 0]

for i in range(n-1): # проход по всем координатам занятых мест
    # если ряд двух рядом стоящих в списке мест совпадает и при этом между ними есть 3 свободных мест
    if a[i][0] == a[i + 1][0] and a[i][1]+4 == a[i+1][1]:
        row = a[i][0] # вычисляем ряд
        place = a[i][1] + 1 # вычисляем минимальное свободное место
        if row > ans[0]:
            ans[0] = row
            ans[1] = place

print(*ans)

Ответ: 2508176

Ошибка.
Попробуйте повторить позже

Задача 13#56549

Задание выполняется с использованием прилагаемых файлов

В лесополосе осуществляется посадка деревьев. Причем деревья высаживают рядами на одинаковом расстоянии. Между соседними деревьями в одном ряду расстояние 10  метров.

Через какое-то время осуществляется аэросъемка, в результате которой определяется, какие деревья прижились. Для успешного перекрестного опыления необходимо, чтобы дерево было на расстоянии не более 20  метров от прижившегося дерева, иначе оно не будет плодоносить. При аэросъемке была совершена ошибка — одно и то же дерево могло быть снято дважды. Определите, какое минимальное количество деревьев нужно посадить, чтобы все деревья могли плодоносить, и номер ряда, в котором необходимо посадить максимальное количество деревьев. Если таких рядов несколько, нужно найти номер первого из них. Если дерево можно посодить в нескольких местах между двумя другими так, что оно будет соседом для обоих, оно садится на максимальном отдалении от дерева с меньшим номером, дерево не может быть посажено за пределами существующего поля.

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

В первой строке входного файла находится число N(1 ≤ N ≤ 10000)  — количество занятых мест. Каждая из следующих N  строк содержит два натуральных числа, не превышающих 1000  : номер ряда и номер занятого места.

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

Два целых неотрицательных числа: минимальное количество деревьев которое нужно посадить, чтобы все деревья могли плодоносить, и минимальный номер ряда, в котором необходимо посадить максимальное количество деревьев.

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

7

4 2

7 5

4 5

5 1

7 1

5 5

7 10

В этом случае достаточно посадить 4  дерева в позициях (4,4)  , (5,3)  , (7,3)  и (7,8)  . Наибольшее количество деревьев нужно посадить в 7-м ряду. Ответ: 4 7  .

Вложения к задаче
Показать ответ и решение

Решение 1 (Excel/LibreOffice)
Откроем текстовый документ, скопируем значения и перенесем их в Excel или LibreOffice.
Удалим значение количества занятых мест. Воспользуемся настраиваемой сортировкой, на первый уровень расположим столбец A  (по возрастанию), на второй - столбец B  (по возрастанию). Выделим полностью столбцы A  и B  , перейдём в раздел Данные и нажимаем на инструмент Удалить дубликаты, в появившемся окне выбираем Выделить все и нажимаем ОК (это удалит деревья, которые были по ошибке сняты дважды).

Добавляем пустую строку перед самой первой (нажимаем правой кнопкой мыши на строку 1  и выбираем Вставить).
Введём обозначения каждого столбца, в которые будем записывать формулы: столбец C  Можно ли опылить текущее дерево предыдущим?, столбец D  Можно ли опылить текущее дерево следующим?, столбец E  Можно ли опылить текущее дерево дополнительно высаженным до него деревом?, столбец F  Высаживаем дополнительное дерево, столбец G  Было ли высажено дерево?, столбец H  Счётчик количества деревьев в каждом ряду.

В ячейку C2  запишем формулу =И(A1=A1;B2-B1<=2), в D2  — =И(A2=A3;B3-B2<=2), в E2  - =И(A2=A1;B2-F1<=2), в F 2  — =ЕСЛИ(ИЛИ(C2:E2);-1000000;ЕСЛИ(B2+2>=МАКС(B:B);B2-2;B2+2)), в G2  — =ЕСЛИ(F2>0;1;0). Выделим все эти ячейки, скопируем и вставим на все столбцы C : G  . Считаем общее количество высаженных деревьев — =СУММ(G:G).
В ячейку H2  запишем 1, а в H3  — формулу =ЕСЛИ(A2=A3;H2+G3;1), скопируем её и вставим на все оставшиеся клеточки столбца H  . Находим в этом столбце максимальное значение, равное 19. Теперь найдём ряд, в котором необходимо посадить это максимальное количество деревьев.

Решение 2 (Python)

f = open(’Задание 26.txt’)
n = int(f.readline())
max_place = 0
max_row = 0
for i in range(n):
    a, b = map(int, f.readline().split())
    max_row = max(a, max_row)
    max_place = max(b, max_place)
f.close()
f = open(’Задание 26.txt’)
n = int(f.readline())
arr = []
for i in range(max_row + 1):
    arr.append([0]*(max_place + 3))
for i in range(n):
    a, b = map(int, f.readline().split())
    arr[a][b] = 1
counter = 0
maxim = 0
maxim_row = 0
for i in range(max_row + 1):
    temp = 0
    for j in range(max_place + 1):
        if arr[i][j] == 1:
            if arr[i][j+2] == 0 and arr[i][j-2] == 0 and arr[i][j+1] == 0 and arr[i][j-1] == 0:
                if j+2 >= max_place:
                    arr[i][j-2] = 1
                else:
                    arr[i][j+2] = 1
                counter += 1
                temp += 1
                if maxim < temp:
                    maxim = temp
                    maxim_row = i
print(counter, maxim_row)

Ответ: 9366 232

Ошибка.
Попробуйте повторить позже

Задача 14#57347

Организация купила для своих сотрудников все места в нескольких подряд идущих рядах на концертной площадке. Известно, какие места уже распределены между сотрудниками. Найдите ряд с наименьшим номером, в котором есть два соседних места, таких что слева и справа от них в том же ряду места уже распределены (заняты). Гарантируется, что есть хотя бы один ряд, удовлетворяющий условию.
Входные данные.
В первой строке входного файла 26_8.txt находится одно число: N — количество занятых мест (натуральное число, не превышающее 10000). В следующих N строках находятся пары чисел: ряд и место выкупленного билета (числа не превышают 100000).
В ответе запишите два целых числа без пробелов и разделителей: сначала наименьший номер ряда, где нашлись обозначенные в задаче места и наименьший номер места в этом ряду.
Пример входного файла:
6
50 12
50 15
60 157
60 160
60 22
60 25
Для данного примера ответом будет являться пара чисел 50 и 13.

Вложения к задаче
Показать ответ и решение

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

1. Сначала переносим столбец с рядами и местами из текстового файла в Excel, а затем сортируем столбец А по возрастанию, после сортируем столбец В по возрастанию. Таким образом получится, что в файле сначала идут ряды от наименьших к наибольшим с упорядоченными местами
2. Далее в ячейке С2 пишем следующую формулу: =ЕСЛИ(A2=A1;B2-B1;0). Так мы считаем разницу между местами, если они находятся в одном ряду.
3. Теперь пробегаемся по столбцу С и ищем первую попашуюся тройку. Она находится в ячейке С13 и связывает 136 ряд и места 114 и 117. Тогда наименьший ряд 136, а наименьшее место 115.

Решение (Python)

f = open(’26_8__1kubw.txt’)
n = int(f.readline())

a = [] # список координат занятых мест
for i in range(n):
    x, y = [int(_) for _ in f.readline().split()] # считывание текущей строки
    a.append([x, y])
a.sort()

ans = [0, 0]

for i in range(n-1): # проход по всем координатам занятых мест
    # если ряд двух рядом стоящих в списке мест совпадает и при этом между ними есть 2 свободных места
    if a[i][0] == a[i + 1][0] and a[i][1]+3 == a[i+1][1]:
        row = a[i][0] # вычисляем ряд
        place = a[i][1] + 1 # вычисляем минимальное свободное место
        print(row,place)
        break

Ответ: 136115

Ошибка.
Попробуйте повторить позже

Задача 15#63357

В лесничестве саженцы сосны высадили параллельными рядами, которые пронумерованы идущими подряд натуральными числами. Растения в каждом ряду пронумерованы натуральными числами начиная с единицы. По данным аэрофотосъёмки известно, в каких рядах и на каких местах растения не прижились. Найдите ряд с наибольшим номером, в котором есть ровно 11 идущих подряд свободных мест для посадки новых сосен, таких, что непосредственно слева и справа от них в том же ряду растут сосны. Гарантируется, что есть хотя бы один ряд, удовлетворяющий этому условию. В ответе запишите два целых числа через пробел: наибольший номер ряда и наименьший номер места для посадки из числа найденных в этом ряду подходящих последовательностей из 11 свободных мест.

Входные данные. В первой строке входного файла находится число N – количество прижившихся саженцев сосны (натуральное число, не превышающее 20 000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 100 000: номер ряда и номер места в этом ряду, на котором растёт деревце.

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

Вложения к задаче
Показать ответ и решение

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

Открываем программу Excel и загружаем в неё наш файл. Сортируем данные столбца А и В по возрастанию.

PIC

В ячейку C2  впишем формулу: =  ЕСЛИ(И(A2 = A1;B2 − B1 = 12);1;0)  и растянем её вниз. Далее выберем с помощью фильтра про столбцу С те строки, в которых значения равны 1. Наибольший номер ряда будет находится в самом низу таблицы и равен 59966. Наибольший номер в выбранной последовательности будет отличаться на 1 от номера места для ряда найденного 59966, то есть 81345.

Решение (Python)

f = open(’264__1vi92.txt’)
n = int(f.readline())

a = [] # список координат прижившихся саженцев
for i in range(n):
    x, y = [int(_) for _ in f.readline().split()] # считывание текущей строки
    a.append([x, y])
a.sort()

ans = [0, 0]

for i in range(n-1): # проход по всем координатам саженцев
    # если ряд двух рядом стоящих в списке саженцев совпадает и при этом между ними есть 11 свободных мест
    if a[i][0] == a[i + 1][0] and a[i][1]+12 == a[i+1][1]:
        row = a[i][0] # вычисляем ряд
        place = a[i][1] + 1 # вычисляем минимальное свободное место
        if row > ans[0]:
            ans[0] = row
            ans[1] = place
print(*ans)

Ответ: 59966 81345

Ошибка.
Попробуйте повторить позже

Задача 16#63358

На прямолинейном участке пути для обеспечения связи необходимо разместить радиопередатчики. Установка каждого такого передатчика возможна на любом из N объектов, включённом в перечень разрешённых. Известно расстояние от нулевой отметки на этом участке до каждого объекта из данного перечня, кроме того по технических нормативам для работы без помех два соседних передатчика должны находиться на расстоянии не менее 15 единиц друг от друга. На данном участке пути необходимо разместить максимальное количество передатчиков, не нарушая технические нормативы. Определите количество передатчиков при таком размещении и максимально возможное расстояние от нулевой отметки до ближайшего к ней передатчика.

Входные данные. В первой строке входного файла находится число N (натуральное число, не превышающее 10 000) - количество объектов, на которых можно устанавливать передатчики. В следующих N строках находятся значения расстояний от нулевой отметки до каждого из этих объектов.

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

Вложения к задаче
Показать ответ и решение

Открываем программу Excel и загружаем в неё наш файл. Сортируем данные столбца А по убыванию.

В ячейку B1  копируем данные из ячейки A1  . В ячейку B2  вписываем формулу: =  ЕСЛИ(B1 − A2 >= 15;A2;B1  ) и протягиваем её вниз.

В ячейку C1  копируем данные из ячейки B1  . В ячейку C2  вписываем формулу: =  ЕСЛИ(B2  < B1;B2  ; ’ ’) и растягиваем её вниз.

Осталось посчитать количество передатчиков и найти расстояние. Для подсчёта количества в ячейку F 2  впишем формулу: =  СЧЁТ(C : C)  , результат получается равный 198. В соседнюю ячейку впишем формулу: =  МИН(C : C )  , её результат и будет являться максимальным возможным расстоянием.

Ответ: 198 131

Ошибка.
Попробуйте повторить позже

Задача 17#63360

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

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

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

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

Вложения к задаче
Показать ответ и решение

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

Открываем программу Excel и загружаем в неё наш файл. Выделяем оба столбца - А и В, переходим в раздел "Данные"и выбираем функцию "Удалить дубликаты". Теперь сортируем данные столбца А и В по возрастанию.

В ячейку C1  помещаем число 1, в ячейку C2  вписываем формулу: =  ЕСЛИ(  И(A2 = A1; B2 = B1 +1);C1 + 1;1)  . Накладываем фильтр на столбец С и выбираем самое большое значение - 10. Это и будет являться максимальной длиной цепочки. Так как для значения 10 у нас нашлась одна строка, то она и будет искомой.

Решение (Python)

f = open(’267__1vi96.txt’)
n = int(f.readline())

maxim = 0
row = 0
max_row = 0 # максимальный ряд в файле
max_seat = 0 # максимальное место в ряду в файле
for i in range(n):
    x, y = [int(s) for s in f.readline().split()] # считывание текущей строки
    max_row = max(max_row,x) # вычисляем максимальный ряд
    max_seat = max(max_seat,y) # вычисляем максимальное место
f.close()
f = open(’267__1vi96.txt’)
n = int(f.readline())

a = [[0 for i in range(max_seat+1)] for j in range(max_row+1)] # матрица свободных и занятых мест

for i in range(n):
    x, y = [int(s) for s in f.readline().split()] # считывание текущей строки
    a[x][y] = 1 # отмечаем, что данный пиксель занят
for i in range(max_row):
    counter = 0 # счетчик подряд идущих занятых пикселей
    for j in range(max_seat):
        if a[i][j] == 1:
            counter += 1
        else:
            counter = 0
        if counter > maxim: # если счётчик больше максимума
            maxim = counter # перезаписываем максимум
            row = i # записываем ряд
print(row,maxim)

Ответ: 2786 10

Ошибка.
Попробуйте повторить позже

Задача 18#63974

В городе планируется музыкальный фестиваль, на который открыт предзаказ билетов. Каждая заявка на предзаказ содержит только одно целое число - количество билетов, которые человек хочет купить.

Перед началом фестиваля кассир распределяет заявки следующим образом: в первую очередь рассматриваются заявки, содержащие наибольшее количество билетов для покупки. Все билеты из одной заявки должны находится в одном ряду. А также, в первую очередь заполняется ряд с наименьшим номером.

Определите, какое количество заявок подтвердит кассир и сколько свободных мест останется после распределения всех заявок.

Входные данные. В первой строке находится три числа: A - количество рядов, B - количество мест в ряду и C - количество заявок. В каждом из С следующих строк находится одно число - количество билетов в заявке.

Выходные данные. Два числа через пробел - сначала количество подтвержденных заявок, затем количество оставшихся мест.

Вложения к задаче
Показать ответ и решение

Решение (Python)

with open(’26_2__1vv2z.txt’) as f:
    # k - количество рядов
    # m - количество мест в ряду
    # n - количество заявок
    k, m, n = map(int, f.readline().split())
    # Список заявок
    s = [int(f.readline())for _ in range(n)]
# Сортируем список так, чтобы в начале стояли наибольшие числа
s.sort(reverse=True)

# Список для обозначения свободных мест
free = [m]*k
# Количество подтверждённых заявок
cnt = 0

# Проходимся по заявкам
for x in s:
    # Проходимся по каждому ряду
    for i in range(k):
        # Если в ряду достаточно свободных мест для заявки — засчитываем
        if free[i] >= x:
            # Отнимаем кол-во занимаемых мест от кол-ва свободных мест в этом ряду
            free[i] -= x
            cnt += 1
            break # сбрасываем цикл - переходим к следующей заявке
print(cnt, sum(free))

Ответ: 278 535

Ошибка.
Попробуйте повторить позже

Задача 19#85885

В лесополосе осуществляется посадка деревьев. Причем саженцы высаживают рядами на одинаковом расстоянии.

Через какое-то время осуществляется аэросъемка, в результате которой определяется, какие саженцы прижились. Необходимо определить ряд с максимальным номером, в котором есть подряд ровно 13  неприжившихся саженцев, при условии, что справа и слева от них саженцы прижились. При аэросъемке была совершена ошибка — одно и то же дерево могло быть снято дважды. В ответе запишите сначала наибольший номер ряда, затем наименьший номер из найденных 13  неприжившихся мест в этом ряду.

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

В первой строке входного файла находится число N  — количество занятых мест (натуральное число, не превышающее 10000  ). Каждая из следующих N  строк содержит два натуральных числа, не превышающих 1000  : номер ряда и номер занятого места.

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

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

Вложения к задаче
Показать ответ и решение

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

Сначала перенесем данные из файла в Excel, скопировав и вставив с разделителем пробел, а также удалим первую строчку.

Настраиваемой сортировкой отсортируем в первую очередь по столбцу A  по возрастанию, во вторую - по столбцу B  по возрастанию.

PIC

PIC

Выделим полностью столбцы A  и B  , перейдём в раздел Данные и нажимаем на инструмент Удалить дубликаты, в появившемся окне выбираем Выделить все и нажимаем ОК (это удалит деревья, которые были по ошибке сняты дважды).

В LibreOffice Calc необходимо также выделить оба столбца, применить фильтр и перейти в раздел Фильтр по условию -> Стандартный фильтр.

В условиях фильтра необходимо через И выбрать столбцы A  и B  , установить значение Не пусто и поставить галочку напротив Без повторений. После чего нужно скопировать отфильтрованные значения на новый лист и работать уже там.

PIC

PIC

Чтобы определить, пропущены ли ровно 13 саженцев среди прижившихся, в ячейку C1  запишем формулу и растянем её до конца таблицы:

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

Условие A2 = A1  обеспечивает попадание двух прижившихся саженцов в один ряд, B2− B1 = 14  - равенство количества неприжившихся саженцев между прижившимися 13-и. Если условия выполнились - записываем в ячейку номер первого неприжившегося саженца из 13-и.

Отфильтруем данные по столбцу C  , убрав все нули, и получим места, для которых выполнилось условие. Значения из столбцов A  и C  последней строчки запишем в ответ.

Решение (Python)

f = open(’m4_26_18_04.txt’)

n = int(f.readline())

tr = [list(map(int, i.split())) for i in f] # считываем файл
tr.sort() # сортируем по возрастанию значения в столбцах

max_row = 0 # максимальный ряд
min_place = 10 ** 10 # минимальное подходящее место в максимальном ряду

for i in range(len(tr) - 1):
# если ряды рядом двух стоящих совпадают
    if tr[i][0] == tr[i + 1][0]:
     # если между ними есть 13 свободных мест
        if tr[i + 1][1] - tr[i][1] == 14:
            if max_row == tr[i][0]: # если номер максимального ряда совпадает с текущим рассматриваемым рядом
                min_place = min(min_place, tr[i][1] + 1) # вычисляем минимальное подходящее место в максимальном ряду
            else:
                min_place = tr[i][1] + 1
            max_row = tr[i][0]

print(max_row, min_place)

Ответ: 977 858

Ошибка.
Попробуйте повторить позже

Задача 20#85886

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

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

В первой строке входного файла находится одно число: N  — количество занятых мест (натуральное число, не превышающее 10000  ). В следующих N  строках находятся пары чисел: ряд и место выкупленного билета, не превышающие 1000  .

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

Вложения к задаче
Показать ответ и решение

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

Сначала перенесем данные из файла в Excel, скопировав и вставив с разделителем пробел, а также удалим первую строчку.

Настраиваемой сортировкой отсортируем в первую очередь по столбцу A  по возрастанию, во вторую - по столбцу B  по возрастанию.

PIC PIC

Выделим полностью столбцы A  и B  , перейдём в раздел Данные и нажимаем на инструмент Удалить дубликаты, в появившемся окне выбираем Выделить все и нажимаем ОК (это удалит деревья, которые были по ошибке сняты дважды).

В LibreOffice Calc необходимо также выделить оба столбца, применить фильтр и перейти в раздел Фильтр по условию -> Стандартный фильтр.

В условиях фильтра необходимо через И выбрать столбцы A  и B  , установить значение Не пусто и поставить галочку напротив Без повторений. После чего нужно скопировать отфильтрованные значения на новый лист и работать уже там.

PIC PIC

Чтобы определить тройку мест в необходимом нам порядке, запишем в ячейку C1  и растянем до конца таблицы следующую формулу:

=ЕСЛИ(И(A1=A2;A2=A3;B2-B1=2;B3-B2=2);B2;0)

Условия A1 = A2  и A2 = A3  обеспечивает попадание трех мест в один ряд, B2 − B1 = 2  и B3 − B2 = 2  - свободные места в нужных промежутках.

Отфильтруем данные по столбцу C  , убрав все нули, и получим места, для которых выполнилось условие. Значения из столбцов A  и C  последней строчки запишем в ответ.

Решение (Python)

f = open(’m5_26_18_04__3u8xl.txt’)

n = int(f.readline())

old_tr = [list(map(int, i.split())) for i in f]
old_tr.sort()

tr = [] # список, в котором будут только уникальные координаты
for i in old_tr:
    if not(i in tr):
        tr.append(i)

max_row = 0
place = 0

for i in range(len(tr) - 2):
    # проверка, что у трёх рядом стоящих в списке мест совпадает ряд
    if tr[i][0] == tr[i + 1][0] == tr[i + 2][0]:
        # проверка, что между двумя подряд идущими местами есть одно место свободное
        if tr[i + 1][1] - tr[i][1] == tr[i + 2][1] - tr[i + 1][1] == 2:
            max_row = tr[i][0]
            place = tr[i + 1][1]

print(max_row, place)

Ответ: 534 664
Рулетка
Вы можете получить скидку в рулетке!