Untitled

mail@pastecode.io avatar
unknown
c_cpp
a month ago
842 B
3
Indexable
Never
void solve(vector<vector<int>> arr)
{
    unordered_map<int,int> mp;
    int n=arr.size(),m=arr[0].size();
    vector<int> ans; 
    for(auto i:arr)
    {
        for(auto j:i)
        {
            mp[j]++;
            ans.push_back(j);
        }
    }
    sort(ans.begin(),ans.end(),[&](int a,int b){
        if(mp[a]!=mp[b])
            return mp[a]>mp[b];
        else
            return a>b;
    });
    int idx=0;
    for(int i=0;i<n;i++)
    {
        int x=i,y=0;
        while(x>=0 && y<m)
        {
            arr[x][y]=ans[idx++];
            x--;
            y++;
        }
    }
    for(int i=1;i<m;i++)
    {
        int x=n-1,y=i;
        while(x>=0 && y<m)
            arr[x--][y++]=ans[idx++];
    }

    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
            cout<<arr[j][i]<<" ";
        cout<<endl;
    }
}  
Leave a Comment