Задание:
Одним из интересных объектов, изучаемых в теории игр, являются так называемые антагонистические игры двух лиц. Такие игры характеризуются множеством 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;
}

А про компаратор не догоняю. Буду признателен, если подскажешь.