#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define fi first
#define se second
const int N = 2e3+5;
int m,n,a[N][N],mx,mn;
bool kaori1(int mid){
int last = m;
int emilia = mx-mid;
int mn1 = 1e9;
int mx1 = 0;
for(int j = 1; j <= n; j++){
for(int i = 1; i <= last; i++){
if(a[i][j] < emilia){
last = i-1;
break;
}
}
for(int i = last+1; i <= m; i++){
mn1 = min(mn1,a[i][j]);
mx1 = max(mx1,a[i][j]);
if(mx1-mn1 > mid) return false;
}
}
return true;
}
bool kaori2(int mid){
int last = m;
int emilia = mx-mid;
int mn1 = 1e9;
int mx1 = 0;
for(int j = n; j >= 1; j--){
for(int i = 1; i <= last; i++){
if(a[i][j] < emilia){
last = i-1;
break;
}
}
for(int i = last+1; i <= m; i++){
mn1 = min(mn1,a[i][j]);
mx1 = max(mx1,a[i][j]);
if(mx1-mn1 > mid) return false;
}
}
return true;
}
bool kaori3(int mid){
int last = 1;
int emilia = mx-mid;
int mn1 = 1e9;
int mx1 = 0;
for(int j = 1; j <= n; j++){
for(int i = m; i >= last; i--){
if(a[i][j] < emilia){
last = i+1;
break;
}
}
for(int i = last-1; i >= 1; i--){
mn1 = min(mn1,a[i][j]);
mx1 = max(mx1,a[i][j]);
if(mx1-mn1 > mid) return false;
}
}
return true;
}
bool kaori4(int mid){
int last = 1;
int emilia = mx-mid;
int mn1 = 1e9;
int mx1 = 0;
for(int j = n; j >= 1; j--){
for(int i = m; i >= last; i--){
if(a[i][j] < emilia){
last = i+1;
break;
}
}
for(int i = last-1; i >= 1; i--){
mn1 = min(mn1,a[i][j]);
mx1 = max(mx1,a[i][j]);
if(mx1-mn1 > mid) return false;
}
}
return true;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> m >> n;
mn = 1e9;
mx = 0;
for(int i = 1; i <= m; i++){
for(int j = 1; j <= n; j++){
cin >> a[i][j];
mx = max(mx,a[i][j]);
mn = min(mn,a[i][j]);
}
}
int l = 0;
int r = mx-mn;
int ans = r;
while(l <= r){
int mid = (l+r)/2;
if(kaori1(mid) || kaori2(mid) || kaori3(mid) || kaori4(mid)){
ans = mid;
r = mid-1;
}
else l = mid+1;
}
cout << ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |