C/C++

Указатели. Программирование с использованием динамических двухмерным масивов.

Очень сильно надо, помогите пожалуйста!!!

Для матрицы размером NxM вывести на экран все седловые точки.
Элемент матрицы называется седловой точкой, если он является наименьшим в
своей строке и одновременно наибольшим в своем столбце или наоборот



Главные требования чтобы работала на сайте C++ online complier
И если будет возможность очень нада опишите что зачем нужно. (Вообщем логику кода)

(В фотках методичка по заданию)
#include <iostream>
#include <iomanip>
#include <limits>
using namespace std;
size_t length(const char* msg) {
cout << msg;
size_t value;
cin >> value;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
return value;
}
int main() {
size_t n = length("Rows: ");
size_t m = length("Columns: ");
int x = m << 1;
int** mx = new int* [n];
puts("Input matrix: ");
for (size_t i = 0; i < n; ++i) {
mx[i] = new int[m];
for (size_t j = 0; j < m; ++j) cin >> mx[i][j];
}
puts("");
int* min_row = new int[m];
int* max_row = new int[m];
for (size_t i = 0; i < n; ++i) {
int min = mx[i][0];
int max = mx[i][0];
for (size_t j = 1; j < m; ++j) {
if (min < mx[i][j]) min = mx[i][j];
if (max > mx[i][j]) max = mx[i][j];
}
min_row[i] = min;
max_row[i] = max;
}
int* min_col = new int[n];
int* max_col = new int[n];
for (size_t j = 0; j < m; ++j) {
int min = mx[0][j];
int max = mx[0][j];
for (size_t i = 1; i < n; ++i) {
if (min < mx[i][j]) min = mx[i][j];
if (max > mx[i][j]) max = mx[i][j];
}
min_col[j] = min;
max_col[j] = max;
}
for (size_t i = 0; i < n; ++i) {
for (size_t j = 1; j < m; ++j) {
if (mx[i][j] == min_row[i] && mx[i][j] == max_col[j]
|| mx[i][j] == max_row[i] && mx[i][j] == min_col[j]) {
cout << "matrix[" << i << "][" << j << "]\n";
}
}
}
delete[] max_col;
delete[] min_col;
delete[] max_row;
delete[] min_row;
for (size_t i = 0; i < n; ++i) delete[] mx[i];
delete[] mx;
}
ПБ
Пётр Бидыло
59 625
Лучший ответ