#include<vector>
#include<iostream>
using namespace std;
class Solution {
public:
    vector<vector<int>> onesMinusZeros(vector<vector<int>>& grid) {
        int cols[100010] = {};
        int rows[100010] = {};
        for(int i = 0 ; i < grid.size(); i++){
            for(int j = 0 ; j < grid[i].size(); j++){
                if(grid[i][j]){
                    cols[j]++;
                    rows[i]++;
                }
            }
        }
        int colszero[100010] = {};
        int rowszero[100010] = {};
        int cols_size = grid.size();
        int rows_size = grid[0].size();
        for(int i = 0 ; i <grid.size();i++){
            colszero[i] = cols_size - cols[i];
            rowszero[i] = rows_size - rows[i];
        }
        

        vector<vector<int> >rlt;
        for(int i = 0 ; i < cols_size ; i++){
            vector<int> tmp ;
            for(int j = 0 ; j <rows_size ;j++){
                tmp.push_back(rows[i]+cols[j]-colszero[j]-rowszero[i]);
            }
            rlt.push_back(tmp);
        }
        return rlt;
    }
};
int main(){
    Solution sol;
    vector<int> ex1row1 = {0,1,1};
    vector<int> ex1row2 = {1,0,1};
    vector<int> ex1row3 = {0,0,1};
    vector<vector<int> >ex1 = {ex1row1, ex1row2, ex1row3};
    auto sol1 = sol.onesMinusZeros(ex1);
    for(int i = 0 ; i < sol1.size();i++){
        for(int j = 0 ; j < sol1[i].size(); j++){
            cout<<sol1[i][j]<<' ';
        }
        cout<<endl;
    }
    return 0;
}