#include <bits/stdc++.h>
using namespace std;
int main() {
	int n, m;
	cin >> n >> m;
	int bt[n], zero = 0, one = 0, two = 0, cnt[m];
	memset(bt,0,sizeof(bt));
	memset(cnt,0,sizeof(cnt));
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++) {
			int a;
			cin >> a;
			cnt[j] += a;
			bt[i] |= (a << j);
		}
	for(int i=0;i<n;i++)
		bt[i] = ~bt[i];
	for(int i=0;i<m;i++)
		if(cnt[i] >= (n / 2) + 2)
			zero++;
		else if(cnt[i] == (n / 2) + 1)
			one |= (1 << i);
		else if(cnt[i] == (n / 2))
			two |= (1 << i);
	for(int i=0;i<n;i++) {
		int ans = 0;
		for(int j=0;j<n;j++)
			if(j != i)
				ans = max(ans, __builtin_popcount((one&(bt[i]|bt[j]))|(two&bt[i]&bt[j])));
		cout << ans + zero << "\n";
	}
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |