Submission #750389

#TimeUsernameProblemLanguageResultExecution timeMemory
750389pccThe Kingdom of JOIOI (JOI17_joioi)C++14
100 / 100
1060 ms51920 KiB
#include <bits/stdc++.h> using namespace std; const int mxn = 2022; int arr[mxn][mxn],lim[mxn]; int n,m; int small = 1e9+10; bool calc(int d){ for(lim[1] = 1;lim[1]<=m&&arr[1][lim[1]]<=small+d;lim[1]++); for(int i = 2;i<=n;i++){ for(lim[i] = 1;lim[i]<lim[i-1]&&arr[i][lim[i]]<=small+d;lim[i]++); } int big = 0,small = 1e9+10; for(int i = 1;i<=n;i++){ for(int j = m;j>=lim[i];j--)big = max(big,arr[i][j]),small = min(small,arr[i][j]); } return big-small<=d; } bool f(int d){ bool flag = false; flag = calc(d); for(int i = 1;i<=n;i++)reverse(arr[i]+1,arr[i]+1+m); flag = flag||calc(d); reverse(arr+1,arr+n+1); flag = flag||calc(d); for(int i = 1;i<=n;i++)reverse(arr[i]+1,arr[i]+1+m); flag = flag||calc(d); return flag; } int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>m; int big = 0; for(int i = 1;i<=n;i++) for(int j = 1;j<=m;j++)cin>>arr[i][j],big = max(big,arr[i][j]),small = min(small,arr[i][j]); int l = 0,r = big; while(l != r){ int mid = (l+r)>>1; if(f(mid))r = mid; else l = mid+1; } cout<<l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...