Другие языки программирования и технологии

Программирование на языке С++

Не могу найти ошибку в коде. Посмотрите, кому не сложно. (прикреплен скрин кода)

Задание:
Одним из интересных объектов, изучаемых в теории игр, являются так называемые антагонистические игры двух лиц. Такие игры характеризуются множеством X стратегий первого игрока, множеством Y стратегий второго игрока и функцией выигрыша K(x, y) (x из X, y из Y). Если множества стратегий X и Y конечны, то такую игру принято называть матричной, так как функцию выигрыша K в этом случае удобно задавать матрицей.

Рассмотрим матричную игру, в которой X = {1,…,n}, Y = {1,…,m}. Матрицу выигрышей обозначим символом K. Нижним значением игры назовем число maxi=1..nminj=1..m Kij . Верхним значением игры назовем число minj=1..mmaxi=1..n Kij. Отметим также, что игры, у которых нижнее и верхнее значение совпадают, называются играми с седловой точкой.

Задана матрица выигрышей K для некоторой матричной игры. Найдите ее верхнее и нижнее значение.

Входные данные
Первая строка входного файла INPUT.TXT содержит целые числа n и m (1 ≤ n,m ≤ 100). Далее следуют n строк по m чисел в каждой. j-ое число i-ой строки равно Kij . Все Kij по модулю не превосходят 1000.

Выходные данные
В выходной файл OUTPUT.TXT выведите нижнее и верхнее значение игры через пробел.

Примеры
INPUT.TXT
3 3
4 -1 -3
-2 1 3
0 2 -3
OUTPUT.TXT
-2 2

INPUT.TXT
3 4
-1 0 2 1
-2 0 1 0
2 1 -1 -2
OUTPUT.TXT
-1 1

Код:
#include (библиотека iostream)
using namespace std;

//функция сравнения для qsort();
int cmp(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}

int main()
{
int m[100][100];
//основной массив значений
int min[100], max[100];
//массивы минимальных и максимальных значений
int line, col;
cin >> line >> col;

for(int i = 0; i < line; i++)
{
for(int j = 0; j < col; j++) cin >> m[i][j];

qsort(m[i],col,sizeof(int),cmp);
min[i] = *m[i];
max[i] = m[i][col-1];
//сортировка каждой строки по возрастанию
//и заполнение побочных массивов
}

qsort(min,line,sizeof(int),cmp);
qsort(max,line,sizeof(int),cmp);
//сортировка побочных массивов по возрастанию
//для последующего вывода максимального из минимальных
//и минимального из максимальных

cout << min[line-1] << " " << *second;
}
Сказал бы хоть, в чем ошибка (мне ж лень компилить).

При беглом взгляде, первое, что бросается в глаза, один компаратор для всех случаев. Сам допрешь, почему так делать нельзя?
Паша Янковский
Паша Янковский
16 320
Лучший ответ
Вася Иванов В том и дело, что прога компилируется. Проходит два теста из примера, а на третьем ошибается.
А про компаратор не догоняю. Буду признателен, если подскажешь.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Game final {
public:
explicit Game(const size_t r = 0U, const size_t c = 0U) : rows_(r), cols_(c) {}
bool add(const vector<int>& row) {
if (matrix_.size() >= rows_) return false;
if (row.size() != cols_) return false;
matrix_.emplace_back(row);
return matrix_.size() == rows_;
}
int find_max_of_min()const {
vector<int> box;
for (const auto &row : matrix_) {
auto min_value = *min_element(row.begin(), row.end());
box.push_back(min_value);
}
return *max_element(box.begin(), box.end());
}
int find_min_of_max()const {
vector<int> box;
for (const auto &row : matrix_) {
auto max_value = *max_element(row.begin(), row.end());
box.push_back(max_value);
}
return *min_element(box.begin(), box.end());
}
private:
size_t rows_;
size_t cols_;
vector<vector<int>> matrix_;
};
vector<int> fill(const size_t n) {
vector<int> box(n);
for (auto i = 0U; i < n; ++i) cin >> box.at(i);
return box;
}
int main() {
size_t rows, cols;
cin >> rows >> cols;
Game game(rows, cols);
for (auto i = 0U; i < rows; ++i) game.add(fill(cols));
const auto max_of_min = game.find_max_of_min();
const auto min_of_max = game.find_min_of_max();
cout << max_of_min << ' ' << min_of_max << endl;
system("pause");
}
Димо_Он
Димо_Он
51 628
Вася Иванов Без классов, векторов и алгоритмов никак?)
понятно, выше не справился. Я вообще не знаю, для чего тут сортировать... еще скажите, что если есть массив 1000000 то его надо отсортировать, чтобы найти максимум, когда сложность будет 1000000*1000000
Вася Иванов Сортировка - один из вариантов решения. В чём именно он не угодил? Максимально возможный массив 100х100.