486B. OR in Matrix - Codeforces Solution C++

  Problem Link : 486B. OR in Matrix 


✅ C++ Solution :

 
#include<bits/stdc++.h>
using namespace std;
 
int main()
{
  int m,n;
  cin>>m>>n;
  bool B[m][n];
  unordered_set<int> row,col;
  row.clear();
  col.clear();
  for(int i=0;i<m;i++)
  {
    for(int j=0;j<n;j++)
    {
      cin>>B[i][j];
      if(!B[i][j])
      {
        row.insert(i);
        col.insert(j);
      } 
    }
 
  }
  if(row.size()==m)
  {
      for(int j=0;j<n;j++)
          col.insert(j);
  }
  else if(col.size()==n)
  {
      for(int i=0;i<m;i++)
          row.insert(i);
  }
  bool flag=true;
  for(int i=0;i<m;i++)
  {
    for(int j=0;j<n;j++)
    {
      if(B[i][j] && row.find(i)!=row.end() && col.find(j)!=col.end())
      {
        flag=false;
        break;
        
      }
    }
  }
 
  if(!flag)
    cout<<"NO";
  else
  {
    bool A[m][n];
    for(int i=0;i<m;i++)
    {
      for(int j=0;j<n;j++)
        A[i][j]=-1;
    }
 
    for(auto it = row.begin();it!=row.end();it++)
    {
      for(int j=0;j<n;j++)
        A[*it][j]=0;
    }
 
    for(auto it=col.begin();it!=col.end();it++)
    {
      for(int i=0;i<m;i++)
        A[i][*it]=0;
    }
    for(int i=0;i<m;i++)
    {
      for(int j=0;j<n;j++)
      {
        if(A[i][j]==-1)
          A[i][j]=1;
      }
    }
 
    cout<<"YES\n";
    for(int i=0;i<m;i++)
    {
      for(int j=0;j<n;j++)
        cout<<A[i][j]<<" ";
      cout<<"\n";
    }
 
  }
 
}

 

Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook. 

😇Happy Learning!!