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

    Приведем текст программы:

Program Problem33_3; 
Var
  X: Array[1..50,1..50] Of Integer;
  m,n,i,j,nom:Byte;
  max,min:Integer;
Begin
  Write('Задайте количество строк и столбцов: ');
  ReadLn(m,n);
  WriteLn('Укажите элементы массива');
  For i:=1 To m Do
   For j:=1 To n Do
   Begin
    Write('X[', i, ',', j,']:=');
    ReadLn(X[i,j]);
   End;
  WriteLn('Исходный массив:');
  For i:=1 To m Do
   Begin
     For j:=1 To n Do
       Write(X[i,j]:4);
     WriteLn;
   End;
  For i:=1 To m Do {Цикл по количеству строк.}
   Begin {Поиск минимума в текущей строке.}
      min:=X[i,1]; {Начальное значение минимума.}
      For j:=2 To n Do
        If X[i,j]<min Then min:=X[i,j];
      {Выбор максимального минимума.}
      If i=1 Then {Если это первая строка,}
        Begin     {то ее данные возьмем за максимум.}
          nom:=i;
          max:=min;
        End
      Else {Это не первая строка, то есть можно сравнивать.}
        If max<min Then
         Begin
          nom:=i;
          max:=min;
         End;
   End;
  WriteLn('Номер строки, где находится максимальный минимум = ',nom);
  WriteLn('Его значение = ',max);
End.
Текст этой программы можно взять здесь.