#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
#define st first
#define nd second
#define f(a, c, b) for (int a = c; b > a; a++)
#define pb push_back
#define all(a) a.begin(), a.end()
#define wczytaj(a, c, n) a.resize(n); f(i, c, n) cin >> a[i];
#define sz(a) int(a.size())
#define wypisz(a, c) f(i, c, sz(a)) cout << a[i] << " "; cout << "\n";
const int DUZO = 10000000;
int n;
int m;
vector<int> parlament;
vector<int> czy_podmaska;
vector<pair<int, int>> najb_podmaska; //trzymamy najblizsza i druga najblizsza bo jesli aktualny marszalek bedzie ta maska not to kupa
vector<int> ile_glosuje;
int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	
	cin >> n >> m;
	int p1;
	parlament.resize(n, 0);
	ile_glosuje.resize(m, 0);
	czy_podmaska.resize((1 << m));
	f(i, 0, n) {
		f(j, 0, m) {
			cin >> p1;
			if (p1) {parlament[i] += (1 << j); ile_glosuje[j]++;};
		}
		czy_podmaska[parlament[i]]++;
	}
	//obliczam czy istnieja podmaski innych masek 
	f(j, 0, m) {
		f(i, 1, (1 << m)) {
			if (i & (1 << j)) {
				czy_podmaska[i] += czy_podmaska[i - (1 << j)];
			}
		}
	}
	
	najb_podmaska.resize(1 << m, {DUZO, DUZO});
	
	for (int posel: parlament) {
		if (najb_podmaska[posel].st == DUZO) najb_podmaska[posel].st = 0;
		else najb_podmaska[posel].nd = 0;
	}
	
	/*for (pair<int, int> ele: najb_podmaska) {
		cout << ele.st << " " << ele.nd << "\n";
	}
	cout << "\n\n";*/
	
	vector<int> p2;
	f(j, 0, m) {
		f(i, 0, (1 << m) - 1) {
			if (!(i & (1 << j))) {
				p2 = {najb_podmaska[i].st, najb_podmaska[i].nd, najb_podmaska[i ^ (1 << j)].st + 1, najb_podmaska[i ^ (1 << j)].nd + 1};
				sort(all(p2));
				najb_podmaska[i] = {p2[0], p2[1]};
			} else {
				p2 = {najb_podmaska[i].st, najb_podmaska[i].nd, najb_podmaska[i ^ (1 << j)].st, najb_podmaska[i ^ (1 << j)].nd};
				sort(all(p2));
				najb_podmaska[i] = {p2[0], p2[1]};
			}
		}
	}
	
	/*for (pair<int, int> ele: najb_podmaska) {
		cout << ele.st << " " << ele.nd << "\n";
	}
	cout << "\n\n";*/
	
	int aktl_maska;
	int wyglosuj = (n/2);
	int ile_pot;
	
	int p5;
	
	f(i, 0, n) {
		f(j, 0, m) {
			if (parlament[i] & (1 << j)) ile_glosuje[j]--;
		}
		aktl_maska = 0;
		ile_pot = 0;
		f(j, 0, m) {
			if (ile_glosuje[j] - 1 >= wyglosuj) {
				ile_pot++;
				aktl_maska += (1 << j);
			} else if (ile_glosuje[j] < wyglosuj) {
				aktl_maska += (1 << j);
			} else {
				ile_pot++;
			}
		}
		if ((parlament[i] & aktl_maska) == parlament[i]) {
			if (czy_podmaska[aktl_maska] >= 2) {
				cout << ile_pot << "\n";
			} else {
				cout << ile_pot - najb_podmaska[aktl_maska].nd << "\n";
			}
		} else {
			if (czy_podmaska[aktl_maska]) {
				cout << ile_pot << "\n";
			} else {
				p5 = 0; //na ilu bitach parlament przeszkadza temu drugiemu
				f(j, 0, m) {
					if ((parlament[i] & (1 << j)) && (!(aktl_maska & (1 << j)))){
						p5++;
					}
				}
				if (najb_podmaska[aktl_maska].st == p5) {
					cout << ile_pot - najb_podmaska[aktl_maska].nd << "\n";
				} else {
					cout << ile_pot - najb_podmaska[aktl_maska].st << "\n";
				}
			}
		}
		f(j, 0, m) {
			if (parlament[i] & (1 << j)) ile_glosuje[j]++;
		}
	}
	
	return 0;
}
| # | 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... |