Untitled
unknown
c_cpp
a year ago
842 B
10
Indexable
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;
}
} Editor is loading...
Leave a Comment