Submission #1161538

#TimeUsernameProblemLanguageResultExecution timeMemory
1161538yonatanlMaxcomp (info1cup18_maxcomp)C++20
100 / 100
74 ms23892 KiB
#include <iostream> #include <vector> #include <algorithm> #define rep(i, s, e) for (ll i = s; i < e; i++) #define upmax(a, b) a = max(a, b) using namespace std; using ll = long long; using vll = vector<ll>; using vvll = vector<vll>; ll calc(vvll & arr, ll n, ll m) { ll ans = -1; vvll min_ele(n, vll(m, 1e18)), max_ele(n, vll(m, -2)); for (ll i = 0; i < n; i++) { for (ll j = 0; j < m; j++) { if (i > 0) { min_ele[i][j] = min_ele[i - 1][j]; max_ele[i][j] = max_ele[i - 1][j]; } if (j > 0) { min_ele[i][j] = min(min_ele[i][j], min_ele[i][j - 1]); max_ele[i][j] = max(max_ele[i][j], max_ele[i][j - 1]); } min_ele[i][j] = min(min_ele[i][j], arr[i][j] - i - j); max_ele[i][j] = max(max_ele[i][j], arr[i][j] + i + j); ans = max(ans, (arr[i][j] - i - j) - min_ele[i][j] - 1); ans = max(ans, max_ele[i][j] - (arr[i][j] + i + j) - 1); } } return ans; } void solve() { ll n, m; cin >> n >> m; vvll arr(n, vll(m)); rep(i, 0, n) { rep(j, 0, m) { cin >> arr[i][j]; } } ll res = calc(arr, n, m); rep(i, 0, n) { reverse(arr[i].begin(), arr[i].end()); } upmax(res, calc(arr, n, m)); cout << res << endl; } int main() { ios_base::sync_with_stdio(false); cin.tie(0); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...