#include <bits/stdc++.h>
using namespace std;
int a[25][25], b[25];
struct node {
int id, p;
bool operator < (const node& y) const {
return (p != y.p ? p < y.p : id < y.id);
}
} xx[2000005];
int main() {
int n, m; cin >> n >> m;
if(n == 1) { cout << "0\n"; return 0; }
for(int i = 1;i < (1 << m);i++)
xx[i] = {i, __builtin_popcount(i)};
sort(xx+1, xx+(1 << m));
for(int i = 1;i <= n;i++)
for(int j = 1;j <= m;j++)
cin >> a[i][j];
for(int i = 1;i <= n;i++) {
int ans = 0x7fffffff;
for(int j = 1;j < (1 << m);j++) {
int x = xx[j].id;
for(int k = 1;k <= m;k++) b[k] = x % 2, x >>= 1;
bool flag = false;
for(int k = 1;k <= n;k++) {
if(k == i) continue;
bool ff = true;
for(int l = 1;l <= m;l++)
if(b[l] && (a[k][l] != a[i][l]))
ff = false;
if(ff) flag = true;
} if(!flag) { ans = xx[j].p; break; }
} cout << (ans == 0x7fffffff ? -1 : ans) << " \n"[i == n];
}
return 0;
}
就加了高亮处的优化就过了,还跑得飞快。不加 TLE 30。