RT,对着题意模拟,但是只有 50 pts
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 1e3 + 5;
int n, m, k, a[maxn][maxn];
int sum[maxn], Max = INT_MIN, Min = INT_MAX;
signed main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> m >> k;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
}
}
while (k--) {
memset(sum, 0, sizeof(sum));
Min = INT_MAX, Max = INT_MIN;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
sum[j] += a[i][j];
}
}
for (int i = 1; i <= m; i++) {
Min = min(Min, sum[i]);
Max = max(Max, sum[i]);
}
vector<int> v;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (sum[j] == Max) {
// cout << j << " ";
v.push_back(a[i][j]);
a[i][j] = 0;
}
if (sum[j] == Min) {
// cout << j << " ";
v.push_back(a[i][j]);
a[i][j] = 0;
}
}
}
//cout << endl;
sort(v.begin(), v.end(), greater<int>());
for (int i = n; i >= 1; i--) {
if (i % 2 == 0) {
for (int j = 1; j <= m; j++) {
if (a[i][j] == 0) {
a[i][j] = v.back();
v.pop_back();
}
}
} else {
for (int j = m; j >= 1; j--) {
if (a[i][j] == 0) {
a[i][j] = v.back();
v.pop_back();
}
}
}
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}