C/C++

Нужна помощь с задачей на С++

Кто поможет с задачей, буду очень благодарен. Мой код работает красиво в первых тестах, а потом ошибается, не знаю в чём дело :( Спасибо заранее за помощь!

Задача:

Дана матрица размера M × N. Найти минимальный среди максимальных элементов ее столбцов.

Ввод
3 3
1 2 3
4 5 6
7 8 9

Вывод
7


Примечания:

Условие вида «дана матрица размера M × N» означает, что вначале дается фактический размер двумерного массива-матрицы (количество строк M и количество столбцов N), а затем приводятся элементы этого массива (количество элементов равно M·N).
Если в задании явно не указывается, какие значения могут принимать размеры исходной матрицы, то предполагается, что и число строк, и число столбцов может меняться.
Порядковые номера начальной строки и начального столбца матрицы считаются равными 1.
Ввод и вывод элементов матрицы осуществляются по строкам.
Квадратной матрицей порядка M называется двумерный массив-матрица размера M × M.
Если в задании, связанном с созданием (преобразованием) матрицы, не описан результирующий набор данных, то предполагается, что этим набором является созданная (преобразованная) матрица, и необходимо вывести все ее элементы.


МОЙ КОД:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int M, N;
cin >> M >> N;
float array[500][500];

for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
float temp;
cin >> temp;
array[i][j] = temp;
}
}

vector <float> Q;

for (int i = 0; i < M; i++) {
float min = array[0][i];
for (int j = 0; j < N; j++) {
if (array[j][i] > min) min = array[j][i];
}
Q.push_back(min);
}

float result = Q[0];
for (auto now : Q) {
if (now < result) result = now;
}

cout << result;

return 0;
}
 #include  
using namespace std;
int main() {
size_t m, n;
cin >> m >> n;
auto matrix = new(nothrow) int* [m];
if (matrix != nullptr) {
for (size_t i = 0; i < m; ++i) {
matrix[i] = new(nothrow) int[n];
if (matrix[i] == nullptr) {
for (size_t j = 0; j < i; ++j) {
delete[] matrix[j];
}
delete[] matrix;
matrix = nullptr;
return 1;
}
}
for (size_t i = 0; i < m; ++i) {
for (size_t j = 0; j < n; ++j) {
cin >> matrix[i][j];
}
}
auto box = new int[n];
for (size_t j = 0; j < n; ++j) {
box[j] = matrix[0][j];
for (size_t i = 1; i < m; ++i) {
if (matrix[i][j] > box[j]) {
box[j] = matrix[i][j];
}
}
}
auto min = box[0];
for (size_t i = 1; i < n; ++i) {
if (box[i] < min) {
min = box[i];
}
}
cout
Михаил Интеллигентный
Михаил Интеллигентный
76 979
Лучший ответ
вместо статического array посмотри на malloc()
и нумерация в С не с "1" а с "0" -- это тоже надо учитывать
 #include   
#include
#include
using namespace std;

int main()
{
size_t str, col;
cin >> str >> col;
vector matrx(str * col);
for (auto& i : matrx) cin >> i;
vector minimals(matrx.begin(), matrx.begin() + col);
for (size_t i = 1; i < str; i++)
for (size_t j = 0; j < col; j++)
minimals[j] = max(minimals[j], matrx[i * col + j]);
cout > str >> col;
vector matrx(col);
for (auto& i : matrx) cin >> i;
str--;
while (str--) for (auto& i : matrx) { cin >> tmp; i = max(i, tmp); }
cout
BR
Begijon Raximov
51 416