Submission #359190

#TimeUsernameProblemLanguageResultExecution timeMemory
359190MlxaMaxcomp (info1cup18_maxcomp)C++14
100 / 100
192 ms26092 KiB
#ifdef LC #include "pch.h" #else #include <bits/stdc++.h> #endif using namespace std; using ll = long long; #define int ll #define all(x) x.begin(), x.end() #define x first #define y second #define mp make_pair #define mt make_tuple const int N = 1 << 10; const int INF = 1e18; int n; int m; int a[N][N]; void rot() { for (int i = 0; i < N; ++i) { for (int j = i; j < N; ++j) { swap(a[i][j], a[j][i]); } } swap(n, m); for (int i = 0; i < n; ++i) { reverse(a[i], a[i] + m); } } int answer = -1; int dp[N][N]; void solve() { fill_n(dp[0], N * N, INF); for (int i = 0; i < n; ++i) { for (int j = 0; j < m; ++j) { dp[i][j] = a[i][j] - i - j; if (i) { dp[i][j] = min(dp[i][j], dp[i - 1][j]); } if (j) { dp[i][j] = min(dp[i][j], dp[i][j - 1]); } answer = max(answer, a[i][j] - i - j - 1 - dp[i][j]); } } } signed main() { #ifdef LC assert(freopen("input.txt", "r", stdin)); #endif ios::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]; } } for (int it = 0; it < 4; ++it) { if (it) { rot(); } solve(); } cout << answer << "\n"; 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...