CF1619D.New Year‘s Problem
最编程
2024-10-01 07:53:23
...
#include<bits/stdc++.h>
using namespace std;
const int N = 100010;
int T,n,m;
int main()
{
cin>>T;
while(T --)
{
cin>>m>>n;
//mins为所有礼物最大满意度的最小值
int ans = 0,min_s = INT_MAX;
//存礼物的满意度
vector<vector<int>> p(m,vector<int>(n));
//存每种礼物的最大满意度
vector<int> max_s(n);
for(int i=0;i<m;i++)
for(int j=0;j<n;j++)
{
int x;
cin>>x;
//同种礼物取最大
max_s[j] = max(max_s[j],x);
p[i][j] = x;
}
//所有种礼物的最大心意中的最小
for(int i=0;i<n;i++)
min_s = min(min_s,max_s[i]);
//说明想在哪买在哪买,直接就是min_s为答案
if(n - 1 >= m)
ans = min_s;
else
{
//枚举商店
for(int k=0;k<m;k++)
//双指针枚举两个人
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
//ans为最大的结果
//当前商店买这两种礼物与之前最小再取最小为当前情况结果
ans = max(ans,min({min_s,p[k][i],p[k][j]}));
}
cout<<ans<<endl;
}
return 0;
}