Мини-урок · перед практикой

Максимум

Просматриваем элементы по строкам и сохраняем позицию первого максимума.

Как к ней подойти

Разберитесь, как работать со строками и столбцами двумерного массива, не путая индексы.

Коротко о теме

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

Ключевая идея · Построчный поиск

Строгое сравнение оставляет прежнюю позицию при равных значениях. None позволяет начать даже с отрицательного элемента.

Проверьте перед запуском

  • Индексы начинаются с нуля.
  • Не обновляйте позицию при равенстве максимуму.

Сравните свой подход

Ниже - готовое решение, другой способ, если он есть, и важные детали проверки.

Ваше принятое решение

Рекомендуемое решение: Построчный поиск

Строгое сравнение оставляет прежнюю позицию при равных значениях. None позволяет начать даже с отрицательного элемента.

n, m = map(int, input().split())
best = None
for i in range(n):
    row = list(map(int, input().split()))
    for j, value in enumerate(row):
        if best is None or value > best:
            best, bi, bj = value, i, j
print(bi, bj)

Время: O(nm). Память: O(m), хранится одна строка.

Другой способ: Поиск максимума и его первой позиции

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

n, m = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(n)]
best = max(map(max, a))
for i, row in enumerate(a):
    if best in row:
        print(i, row.index(best))
        break

Время: O(nm). Память: O(nm).