邏輯釐清https://youtu.be/9oXuWVf2rZ0?si=NRfSWViiriBarQ-S
#include <bits/stdc++.h>
using namespace std;
int arr[1000][1000], temp[1000][1000];
int main() {
int r, c, k, m;
cin >> r >> c >> k >> m;
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
cin >> arr[i][j];
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
while (m--) {
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
temp[i][j] = arr[i][j];
for (int i = 0; i < r; i++) {
for (int j = 0; j < c; j++) {
if (arr[i][j] < 0) continue;
int outflow = arr[i][j] / k;
for (int d = 0; d < 4; d++) {
int ni = i + dx[d];
int nj = j + dy[d];
if (ni >= 0 && ni < r && nj >= 0 && nj < c && arr[ni][nj] >= 0) {
temp[i][j] -= outflow;
temp[ni][nj] += outflow;
}
}
}
}
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
arr[i][j] = temp[i][j];
}
int mn = INT_MAX, mx = INT_MIN;
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
if (arr[i][j] >= 0) {
mn = min(mn, arr[i][j]);
mx = max(mx, arr[i][j]);
}
cout << mn << "\n" << mx;
return 0;
}