func_code_string: #pragma GCC optimize( Ofast,unroll-loops )   #pragma GCC target( avx,avx2,sse,sse2,ssse3,sse4,mmx,popcnt )   #include <bits/stdc++.h>   #define ar array      using namespace std;   using ll = long long;      mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());      const int mxN = 2e5, mxM = 60;   int n, m, p;   vector<int> a[mxN];   using S = bitset<mxN>;   S a_inv[mxM];      ll ans = 0;      void solve(int start) {     int k = (int)a[start].size();        int best = 0;     int best_cnt = __builtin_popcountll(ans);        for (int s = 1; s < 1<<k; ++s) {       if (__builtin_popcount(s) <= best_cnt) continue;       S agree; agree.set();       for (int kk = 0; kk < k; ++kk) {         if (!(s & (1<<kk))) continue;         agree &= a_inv[a[start][kk]];       }       if ((int)agree.count()*2 >= n) best = s, best_cnt = __builtin_popcount(s);     }        if (best_cnt > __builtin_popcountll(ans)) {       ans = 0;       for (int kk = 0; kk < k; ++kk) {         if (!(best & (1<<kk))) continue;         ans |= (1LL<<a[start][kk]);       }     }   }      int main() {     cin.tie(0)->sync_with_stdio(0);        // since 50% need to agree, any random guy has at least 50% chance of being in the set     // need to only select a few people        cin >> n >> m >> p;     for (int i = 0; i < n; ++i) {       for (int j = 0; j < m; ++j) {         char c; cin >> c;         if (c ==  1 ) a[i].push_back(j);       }     }        for (int i = 0; i < n; ++i)       for (int j : a[i])         a_inv[j].set(i);        uniform_int_distribution<int> random_i(0, n-1);        for (int rep = 0; rep < 10; ++rep) {       int i = random_i(rng);       solve(i);     }        for (int i = 0; i < m; ++i) {       cout << (ans&1);       ans /= 2;     }     cout <<   n ;   }   