Advertisement
leanchec

Untitled

Aug 9th, 2024
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.53 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5. #define endl '\n'
  6.  
  7. const int MOD=(long long)805306457*1000000009;
  8.  
  9. int fast_inv(int b, int exp){
  10.     if(exp==0)return 1;
  11.     if(exp==1)return b;
  12.  
  13.     int val=fast_inv(b, exp/2);
  14.  
  15.     val=((__int128_t)val*val)%MOD;
  16.  
  17.     if(exp&1)val=((__int128_t)val*b)%MOD;
  18.  
  19.     return val;
  20. }
  21.  
  22. int32_t main(){
  23.     ios_base::sync_with_stdio(0); cin.tie(0);
  24.     int T=1;
  25.     cin >> T;
  26.     while(T--){
  27.         int n, m;
  28.         cin >> n >> m;
  29.  
  30.         vector<string> mapa(n);
  31.         map<int,int> resp;
  32.         map<int,pair<int,int>> aux;
  33.  
  34.         for(int i=0; i<n; i++)
  35.             cin >> mapa[i];
  36.  
  37.         for(int coluna=0; coluna<m; coluna++){
  38.             int c0=0, m=1;
  39.             for(int i=0; i<n; i++){
  40.                 if(mapa[i][coluna]=='1')c0=((__int128_t)7*m+c0)%MOD;
  41.                 else c0=((__int128_t)3*m+c0)%MOD;
  42.                 m=((__int128_t)13*m)%MOD;
  43.             }
  44.             m=1;
  45.  
  46.             for(int i=0; i<n; i++){
  47.                 int val;
  48.                 if(mapa[i][coluna]=='1'){
  49.                     val=(c0-(__int128_t)4*m)%MOD;
  50.                     if(val<0)val+=MOD;
  51.                 }
  52.                 else{
  53.                     val=(c0+(__int128_t)4*m)%MOD;
  54.                 }
  55.                 resp[val]++;
  56.                 if(resp[val]==1)aux[val]=make_pair(i, coluna);
  57.                 m=((__int128_t)13*m)%MOD;
  58.             }
  59.         }
  60.  
  61.         int mx=0, val;
  62.  
  63.         for(auto x:resp){
  64.             if(x.second>mx){
  65.                 mx=x.second;
  66.                 val=x.first;
  67.             }
  68.         }
  69.  
  70.         cout << mx << '\n';
  71.  
  72.         pair<int,int> pos=aux[val];
  73.  
  74.         for(int i=0; i<n; i++){
  75.             if(i==pos.first){
  76.                 if(mapa[i][pos.second]=='1')cout << '0';
  77.                 else cout << '1';
  78.             }
  79.             else{
  80.                 if(mapa[i][pos.second]=='1')cout << '1';
  81.                 else cout << '0';
  82.             }
  83.         }
  84.         cout << '\n';
  85.     }
  86.  
  87.     return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement