Submission #496862

#TimeUsernameProblemLanguageResultExecution timeMemory
496862ergaganMaxcomp (info1cup18_maxcomp)C++17
15 / 100
1093 ms95364 KiB
//я так много думал, что опять попал #include <bits/stdc++.h> #define all(x) x.begin(),x.end() #define pb push_back #define ppb pop_back #define pf push_front #define ppf pop_front #define f first #define s second #define left(v) v + v #define right(v) v + v + 1 #define ub upper_bound #define lb lower_bound #define pll pair<ll,ll> using namespace std; typedef long long ll; //17 SEVENTEEN const long double Pi = acos(-1.0); const ll dx[] = {0,0,1,-1}; const ll dy[] = {1,-1,0,0}; const ll N = (ll) 1e6 + 17; const ll M = (ll) 5e3 + 69; const ll inf = (ll) 1e14 + 3; const ll mod = (ll) 1e9 + 7; ll sq(ll x) { return x * x; } ll zxc = 1, n, m, ans, a[M][M]; map<pair<pll, set<pll> >, bool> used; void go(ll i, ll j, set<pll> st, ll mn, ll mx) { if(used[{{i, j}, st}]) return; used[{{i, j}, st}] = 1; ans = max(ans, mx - mn - ll(st.size())); if(i > 1) { set<pll> cur = st; cur.insert({i - 1, j}); go(i - 1, j, cur, min(mn, a[i - 1][j]), max(mx, a[i - 1][j])); } if(i != n) { set<pll> cur = st; cur.insert({i + 1, j}); go(i + 1, j, cur, min(mn, a[i + 1][j]), max(mx, a[i + 1][j])); } if(j > 1) { set<pll> cur = st; cur.insert({i, j - 1}); go(i, j - 1, cur, min(mn, a[i][j - 1]), max(mx, a[i][j - 1])); } if(j != m) { set<pll> cur = st; cur.insert({i, j + 1}); go(i, j + 1, cur, min(mn, a[i][j + 1]), max(mx, a[i][j + 1])); } } void solve() { cin >> n >> m; for(ll i = 1; i <= n; i++) { for(ll j = 1; j <= m; j++) { cin >> a[i][j]; } } if(n == 1) { for(ll i = 1; i <= n; i++) { for(ll j = 1; j <= m; j++) { for(ll x = 1; x <= n; x++) { for(ll y = 1; y <= m; y++) { ans = max(ans, abs(a[i][j] - a[x][y]) - (abs(i - x) + abs(j - y) + 1)); } } } } cout << ans << "\n"; return; } for(ll i = 1; i <= n; i++) { for(ll j = 1; j <= m; j++) { go(i, j, {{i, j}}, a[i][j], a[i][j]); } } cout << ans; } int main(/*Уверенно*/) { ios_base::sync_with_stdio(0); cin.tie(0); /* freopen(".in", "r", stdin); freopen(".out", "w", stdout); */ // cin >> zxc; while(zxc--) { solve(); } 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...