小塔的集训队共有 n 个人,每个人都有 m 个属性。现在需要从中挑选出 k 个人组成战队。战队的属性计算方式是所选 k 个人对应属性的最大值。战队的战斗力取决于这些属性最大值中的最小值,即 m 个属性的最大值的最小值。目标是选择队员使战队的战斗力最大化,请输出战队的最高战斗力。
求最大值容易想到二分答案,将大于mid的看作1,其他看作0,如果不超过k个数或起来为(1<<m)-1,那么说明当前的mid满足条件
小红的集训队共有 n 个人,每个人都有 m 个属性,现在需要挑选其中的 k 个人组成战队出战。
战队也有 m 个属性,这些属性的计算方式是,挑选出的 k 个人里该属性的最大值。
由于“木桶理论”(一只木桶能装多少水取决于它最短的那块木板),战队的战斗力,取决于这个战队的 m 个属性里的那个最小值。
问如何挑选队员,可以使得战队的战斗力最强,请输出战队的最高战斗力。
每个测试文件均包含多组测试数据。
第一行输入一个整数 T(1≤T≤100),代表数据组数,每组测试数据描述如下:
第一行三个整数 n,m,k(1≤n≤3×105;1≤m≤10;1≤k≤n)。代表候选人量、属性数量、站队需要的总人数。
接下来 n 行,每行输入 m 个整数,a1,a2,...,am(1≤ai≤103)代表每一位战士的 m 项属性。
除此之外,保证全部测试数据的 n×m 之和不超过 3×105。
对于每一组测试数据,在一行上输出一个整数,代表候选人能组成的站队的最大总战斗力。
输入
1
3 5 3
3 9 6 4 6
6 9 3 1 1
8 8 9 3 7
输出
4
输入
1
5 2 2
1 6
2 6
3 7
4 3
5 2
输出
5