rt,机构网站 AC 了。
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
using LL = long long;
const LL N = 1005;
const LL Inf = 0x7f7f7f7f;
LL a[N][N], f[N][N];
int main()
{
LL n, m, c;
cin >> n >> m >> c;
for (LL i = 1; i <= n; i++)
for (LL j = 1; j <= m; j++)
cin >> a[i][j];
memset(f, Inf, sizeof f);
LL ans = Inf;
for (LL i = 1; i <= n; i++)
for (LL j = 1; j <= m; j++)
{
f[i][j] = min(f[i][j - 1], f[i - 1][j]);
ans = min(ans, a[i][j] + 1LL * c * (i + j) + f[i][j]);
f[i][j] = min(f[i][j], a[i][j] - 1LL * c * (i + j));
}
for (LL i = 1; i <= n; i++)
reverse(a[i] + 1, a[i] + 1 + m);
memset(f, Inf, sizeof f);
for (LL i = 1; i <= n; i++)
for (LL j = 1; j <= m; j++)
{
f[i][j] = min(f[i][j - 1], f[i - 1][j]);
ans = min(ans, a[i][j] + 1LL * c * (i + j) + f[i][j]);
f[i][j] = min(f[i][j], a[i][j] - 1LL * c * (i + j));
}
cout << ans;
return 0;
}