#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 10;
int n, m, a[N][N], val[2][N][N], b[N][N];
int get(){
for (int i = 0; i < N; i ++)
for (int j = 0; j < N; j ++)
val[0][i][j] = val[1][i][j] = -2e9;
for (int i = 1; i <= n; i ++)
for (int j = m; j > 0; j --)
val[0][i][j] = max(val[0][i][j + 1], -a[i][j] -j);
for (int i = n; i > 0; i --)
for (int j = 1; j <= m; j ++)
val[1][i][j] = max(val[1][i + 1][j], a[i][j] -i);
int ans = -1e9;
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m; j ++)
ans = max(ans, val[0][i][j] + j + val[1][i][j] + i - 1);
return ans;
}
void rotate(){
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m; j ++)
b[j][n - i + 1] = a[i][j];
swap(n, m);
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m; j ++)
a[i][j] = b[i][j];
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i ++)
for (int j = 1; j <= m; j ++)
cin >> a[i][j];
int overall = -2e9;
for (int i = 0; i < 4; i ++){
overall = max(overall, get());
rotate();
}
cout << overall << endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |