Submission #854790

#TimeUsernameProblemLanguageResultExecution timeMemory
854790willychanThe Kingdom of JOIOI (JOI17_joioi)C++14
100 / 100
348 ms50324 KiB
#include<bits/stdc++.h> using namespace std; typedef long long ll; //#include<bits/extc++.h> //__gnu_pbds int he[2005][2005]; int h,w; vector<pair<int,int> > minn; bool walked[2005][2005]; int dx[4] = {0,0,-1,1}; int Maxn,Minn; int cnt; int minnn = INT_MAX; int maxnn = INT_MIN; int minbound[2005]; int maxbound[2005]; bool check(int d){ // min on top bool works=1; for(int i=1;i<=h;i++){ minbound[i] = w+1; maxbound[i] = 0; } for(int i=1;i<=h;i++){ for(int j=1;j<=w;j++){ if(he[i][j]<maxnn-d) break; maxbound[i] = j; } for(int j=w;j>=1;j--){ if(he[i][j]>minnn+d) break; minbound[i] = j; } if(minbound[i]-maxbound[i]>1){ works=0; break; } } if(works){ bool g = 1; int k = 0; for(int i=1;i<=h;i++){ k = max(k,minbound[i]); if(maxbound[i]<k-1){g=0;break;} } if(g) return 1; k = w+1; g=1; for(int i=1;i<=h;i++){ k = min(k,maxbound[i]); if(minbound[i]>k+1){g=0;break;} } if(g) return 1; } // max on top works=1; for(int i=1;i<=h;i++){ minbound[i] = 0; maxbound[i] = w; } for(int i=1;i<=h;i++){ for(int j=w;j>=1;j--){ if(he[i][j]<maxnn-d) break; maxbound[i] = j; } for(int j=1;j<=w;j++){ if(he[i][j]>minnn+d) break; minbound[i] = j; } if(maxbound[i]-minbound[i]>1){ works=0; break; } } if(works){ bool g = 1; int k = 0; for(int i=1;i<=h;i++){ k = max(k,maxbound[i]); if(minbound[i]<k-1){g=0;break;} } if(g) return 1; k = w+1; g=1; for(int i=1;i<=h;i++){ k = min(k,minbound[i]); if(maxbound[i]>k+1){g=0;break;} } if(g) return 1; } return 0; } int main(){ ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0); cin>>h>>w; for(int i=1;i<=h;i++){ for(int j=1;j<=w;j++){ cin>>he[i][j]; minnn = min(minnn,he[i][j]); maxnn = max(maxnn,he[i][j]); } } int l = 0;int r = 1e9+5; while(r-l>1){ int mid = (l+(r-l)/2); if(check(mid))r = mid; else l = mid; } cout<<r<<"\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...