题目
using namespace std;
int a[10000][10000];
vector<int> s;
struct zx{
int num;
int vis;
};
bool cmp(int a,int b){
return a>b;
}
int main(){
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=k;i++){
int minn=0x7fffffff,maxn=0;
zx am[1000];
int o=1;
for(int j=1;j<=m;j++){
am[o].vis=j;
for(int i=1;i<=n;i++){
am[o].num+=a[i][j];
}
if(am[o].num>maxn) maxn=am[o].num;
if(am[o].num<minn) minn=am[o].num;
o++;
}
for(int j=1;j<=m;j++){
if(am[o].num==minn||am[o].num==maxn){
for(int i=1;i<=n;i++){
a[i][am[o].vis]=-1;
s.push_back(a[i][am[o].vis]);
}
}
}
o=-1;
sort(s.begin(),s.end(),cmp);
for(int i=1;i<=n;i++){
if(i%2==1){
for(int j=1;j<=m;j++){
if(a[i][j]==-1) a[i][j]=s[++o];
}
}
else {
for(int j=m;j>=1;j--){
if(a[i][j]==-1) a[i][j]=s[++o];
}
}
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cout<<a[i][j]<<' ';
}
cout<<'\n';
}
}