Submission #1141800

#TimeUsernameProblemLanguageResultExecution timeMemory
1141800AgageldiMaxcomp (info1cup18_maxcomp)C++17
15 / 100
97 ms328 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define N 600005 #define pb push_back #define ff first #define ss second #define all(x) x.begin(),x.end() #define sz(s) (int)s.size() #define pii pair<int,int> //mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ll n, a[2000][2000], t, m, b[N], answer, tt; vector <pair<ll,ll>> v, ans; void solve(int x) { if(x == tt + 1) { ans.clear(); for(int i = 1; i <= tt; i++) { if(b[i]) ans.pb({v[i - 1].ff,v[i - 1].ss}); } if(sz(ans)) { sort(ans.begin(),ans.end()); ll mn = a[ans[0].ff][ans[0].ss], mx = a[ans[0].ff][ans[0].ss]; for(int i = 0;i<sz(ans) - 1; i++) { if(abs(ans[i + 1].ff - ans[i].ff) + abs(ans[i + 1].ss - ans[i].ss) > 1) return; mn = min(a[ans[i].ff][ans[i].ss],mn); mx = max(mx,a[ans[i].ff][ans[i].ss]); mn = min(a[ans[i+1].ff][ans[i + 1].ss],mn); mx = max(mx,a[ans[i+1].ff][ans[i+1].ss]); } t = sz(ans); answer = max(answer,mx - mn - t); } return; } b[x] = 0; solve(x+1); b[x] = 1; solve(x+1); } int main () { ios::sync_with_stdio(0);cin.tie(0); cin >> n >> m; for(int i = 1;i <= n;i++) { for(int j = 1;j <=m;j++) { cin >> a[i][j]; if(n*m <= 20) v.pb({i,j}); } } tt = sz(v); if(n * m <= 20) { solve(1); cout << answer << '\n'; return 0; } for(int i = 1; i <= m; i++) { ll mn = a[1][i], mx = a[1][i]; for(int j = i + 1; j <= m; j++) { mx = max(mx,a[1][j]); mn = min(mn,a[1][j]); answer = max(answer, mx - mn - (j - i + 1)); } } cout << answer << '\n'; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...