Максимум
Вы решили задачу. Теперь можно сравнить подходы.
Просматриваем элементы по строкам и сохраняем позицию первого максимума.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Построчный поиск
Строгое сравнение оставляет прежнюю позицию при равных значениях. 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).
На что обратить внимание
- Индексы начинаются с нуля.
- Не обновляйте позицию при равенстве максимуму.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.