Submission #636861

#TimeUsernameProblemLanguageResultExecution timeMemory
636861tvladm2009Maxcomp (info1cup18_maxcomp)C++14
100 / 100
427 ms48228 KiB
#include <iostream> #define int long long using namespace std; const int MAX_N = 1e3; int a[MAX_N + 1][MAX_N + 1]; int dp1[MAX_N + 1][MAX_N + 1], dp2[MAX_N + 1][MAX_N + 1], dp3[MAX_N + 1][MAX_N + 1], dp4[MAX_N + 1][MAX_N + 1] ; int n, m; signed main() { cin >> n >> m; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { cin >> a[i][j]; } } for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { dp1[i][j] = i + j - a[i][j]; if (i > 1) { dp1[i][j] = max(dp1[i][j], dp1[i - 1][j]); } if (j > 1) { dp1[i][j] = max(dp1[i][j], dp1[i][j - 1]); } } } for (int i = 1; i <= n; i++) { for (int j = m; j >= 1; j--) { dp2[i][j] = i - j - a[i][j]; if (i > 1) { dp2[i][j] = max(dp2[i][j], dp2[i - 1][j]); } if (j < m) { dp2[i][j] = max(dp2[i][j], dp2[i][j + 1]); } } } for (int i = n; i >= 1; i--) { for (int j = 1; j <= m; j++) { dp3[i][j] = -i + j - a[i][j]; if (i < n) { dp3[i][j] = max(dp3[i][j], dp3[i + 1][j]); } if (j > 1) { dp3[i][j] = max(dp3[i][j], dp3[i][j - 1]); } } } for (int i = n; i >= 1; i--) { for (int j = m; j >= 1; j--) { dp4[i][j] = -i - j - a[i][j]; if (i < n) { dp4[i][j] = max(dp4[i][j], dp4[i + 1][j]); } if (j < m) { dp4[i][j] = max(dp4[i][j], dp4[i][j + 1]); } } } int answer = -1; for (int i = 1; i <= n; i++) { for (int j = 1; j <= m; j++) { answer = max(answer, a[i][j] - i - j - 1 + dp1[i][j]); answer = max(answer, a[i][j] - i + j - 1 + dp2[i][j]); answer = max(answer, a[i][j] + i - j - 1 + dp3[i][j]); answer = max(answer, a[i][j] + i + j - 1 + dp4[i][j]); } } cout << answer; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...