Submission #1014056

#TimeUsernameProblemLanguageResultExecution timeMemory
1014056snpmrnhlolThe Kingdom of JOIOI (JOI17_joioi)C++17
100 / 100
1429 ms67324 KiB
#include<bits/stdc++.h> using namespace std; const int N = 2e3; const int inf = 1e9; int n,m,mx = -1; int v[N][N]; int v2[N][N]; int pref[N][N]; int ans = inf; bool chk(int x){ int l = mx - x,r = mx; int mx1,mn1,mx2,mn2; bool ok = 0; int pt = m - 1; mx1 = mx2 = -inf; mn1 = mn2 = inf; for(int i = 0;i < n;i++){ while(pt >= 0 && pref[i][pt] < l){ pt--; } for(int j = 0;j < m;j++){ if(j <= pt){ mx1 = max(mx1,v[i][j]); mn1 = min(mn1,v[i][j]); }else{ mx2 = max(mx2,v[i][j]); mn2 = min(mn2,v[i][j]); } } } if(mx1 - mn1 <= x && mx2 - mn2 <= x){ ok = 1; } return ok; } int main(){ cin>>n>>m; for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ cin>>v[i][j]; mx = max(mx,v[i][j]); } } ans = mx; for(int k = 0;k < 4;k++){ for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ pref[i][j] = min((j == 0?inf:pref[i][j - 1]),v[i][j]); } } int l = 0,r = ans; while(l != r){ int mij = (l + r)/2; if(chk(mij)){ r = mij; }else l = mij + 1; } ans = min(ans,l); for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ v2[j][n - i - 1] = v[i][j]; } } swap(n,m); for(int i = 0;i < n;i++){ for(int j = 0;j < m;j++){ v[i][j] = v2[i][j]; } } } cout<<ans<<'\n'; return 0; }

Compilation message (stderr)

joioi.cpp: In function 'bool chk(int)':
joioi.cpp:11:20: warning: unused variable 'r' [-Wunused-variable]
   11 |     int l = mx - x,r = mx;
      |                    ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...