代码TLE了
#include <bits/stdc++.h>
using namespace std;
const int N = 50010, M = 20;
int a[N][M], s[N];
vector<int> g[M][M];
void solve()
{
int n, m;
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i ++ )
{
for (int j = 1; j <= m; j ++ )
{
scanf("%d", &a[i][j]);
g[j][a[i][j]].push_back(i);
}
}
for (int i = 1; i <= n; i ++ )
{
int res = 0;
for (int j = 1; j <= m; j ++ )
{
for (int k : g[a[i][j]][j])
if (s[k] == j - 1)
s[k] ++ , res = max(res, j);
if (res != j) break;
}
printf("%d ", res);
for (int j = res; j >= 1; j -- )
for (int k : g[a[i][j]][j])
if (s[k] == j)
s[k] -- ;
}
puts("");
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= m; j ++ )
g[j][a[i][j]].pop_back();
}
int main()
{
int T;
scanf("%d", &T);
while (T -- ) solve();
return 0;
}