Олимпиадный тренинг

Задача . D. Новогодняя задача


У Влада есть \(n\) друзей, для каждого из которых он хочет купить один подарок на Новый год.

Всего в городе есть \(m\) магазинов, в каждом из которых он может купить подарок любому из друзей. Если \(j\)-й друг (\(1 \le j \le n\)) получает подарок, купленный в магазине с номером \(i\) (\(1 \le i \le m\)), то друг получает \(p_{ij}\) единиц радости. Прямоугольная таблица \(p_{ij}\) задана во входных данных.

Влад успевает посетить не более \(n-1\) магазина (\(n\) — количество друзей). Он сам может выбрать, какие именно магазины посетит, и для каких друзей он будет покупать подарки в каждом из них.

Пусть \(j\)-й друг получил \(a_j\) единиц радости от подарка Влада. Найдем величину \(\alpha=\min\{a_1, a_2, \dots, a_n\}\). Цель Влада — купить подарки так, чтобы значение \(\alpha\) было как можно больше. Иными словами, Влад хочет максимизировать минимальную из радостей друзей.

Например, пусть \(m = 2\), \(n = 2\). Пусть радости от подарков, которые мы можем приобрести в первом магазине: \(p_{11} = 1\), \(p_{12}=2\), во втором магазине: \(p_{21} = 3\), \(p_{22}=4\).

Тогда Владу достаточно зайти только во второй магазин и купить в нем для первого друга подарок, приносящий радость \(3\), а для второго — приносящий радость \(4\). При этом величина \(\alpha\) будет равна \(\min\{3, 4\} = 3\).

Помогите Владу выбрать подарки для своих друзей так, чтобы значение \(\alpha\) было максимально возможным. Обратите внимание на то, что каждый друг должен получить один подарок. Влад может посетить не более \(n-1\) магазина (\(n\) — количество друзей). В магазине он может купить произвольное количество подарков.

Входные данные

В первой строке входных данных записано целое число \(t\) (\(1 \le t \le 10^4\)) — количество наборов входных данных в тесте.

Перед каждым набором в тесте записана пустая строка. Далее идёт строка, которая содержит целые числа \(m\) и \(n\) (\(2 \le n\), \(2 \le n \cdot m \le 10^5\)) через пробел — количество магазинов и количество друзей, где \(n \cdot m\) — это произведение \(n\) на \(m\).

Затем следуют \(m\) строк, содержащих по \(n\) чисел. Число в \(i\)-й строке и \(j\)-м столбце \(p_{ij}\) (\(1 \le p_{ij} \le 10^9\)) — радость от подарка, предназначенного для друга с номером \(j\) в магазине с номером \(i\).

Гарантируется, что сумма значений \(n \cdot m\) по всем наборам входных данных в тесте не превосходит \(10^5\).

Выходные данные

Выведите \(t\) строк, каждая из строк должна содержать ответ на соответствующий набор входных данных — максимальное возможное значение \(\alpha\), где \(\alpha\) — минимальная из радостей от подарка по всем друзьям Влада.


Примеры
Входные данныеВыходные данные
1 5

2 2
1 2
3 4

4 3
1 3 1
3 1 1
1 2 2
1 1 3

2 3
5 3 4
2 5 1

4 2
7 9
8 1
9 6
10 8

2 4
6 5 2 1
7 9 7 2
3
2
4
8
2

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя