Submission #317067

#TimeUsernameProblemLanguageResultExecution timeMemory
3170678e7Maxcomp (info1cup18_maxcomp)C++14
100 / 100
140 ms8312 KiB
#include <iostream> #include <algorithm> #include <utility> #include <vector> #define ll long long #define pii pair<int, int> #define maxn 1005 using namespace std; int a[maxn][maxn], val[maxn][maxn]; int n, m; inline int ab(int a) { return a > 0 ? a : -a; } const int NINF = -1000010000; /* struct BIT{ int bit[maxn][maxn]; void init(){ for (int i = 0;i < maxn;i++) { for (int j = 0;j < maxn;j++) bit[i][j] = -NINF; } } void modify(int x, int y, int val) { for (;x < maxn;x += x & (-x)) { for(int c = y;c < maxn;c += c & (-c)) bit[x][c] = max(bit[x][c], val); } } int query(int x, int y) { int ret = NINF; for (;x > 0;x -= x & (-x)) { for (int c = y;c > 0;c -= c & (-c)) ret = max(ret, bit[x][c]); } return ret; } } bit; */ int main() { ios_base::sync_with_stdio(0);cin.tie(0); cin >> n >> m; for (int i = 0;i < n;i++) { for (int j = 0;j < m;j++) cin >> a[i][j]; } int ans = NINF; for (int i = 0;i < n;i++) { for (int j = 0;j < m;j++) { val[i][j] = max(-a[i][j] + i + j, max(i ? val[i - 1][j] : NINF, j ? val[i][j - 1] : NINF)); //cout << val[i][j] << " "; ans = max(ans, a[i][j] - i - j - 1 + val[i][j]); } //cout << endl; } //cout << ans << endl; for (int i = n - 1;i >= 0;i--) { for (int j = 0;j < m;j++) { val[i][j] = max(-a[i][j] - i + j, max(i < n - 1 ? val[i + 1][j] : NINF, j ? val[i][j - 1] : NINF)); ans = max(ans, a[i][j] + i - j - 1 + val[i][j]); } } for (int i = 0;i < n;i++) { for (int j = m - 1;j >= 0;j--) { val[i][j] = max(-a[i][j] + i - j, max(i ? val[i - 1][j] : NINF, j < m - 1 ? val[i][j + 1] : NINF)); ans = max(ans, a[i][j] - i + j - 1 + val[i][j]); } } for (int i = n - 1;i >= 0;i--) { for (int j = m - 1;j >= 0;j--) { val[i][j] = max(-a[i][j] - i - j, max(i < n - 1 ? val[i + 1][j] : NINF, j < m - 1 ? val[i][j + 1] : NINF)); ans = max(ans, a[i][j] + i + j - 1 + val[i][j]); } } cout << ans << endl; } /* 1 5 2 4 5 6 3 2 3 2 4 3 5 7 5 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...