#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000009
#define INF 1000000019
#define INFL 1000000000000000099LL
ll n,q,s,t,a,b,c,d,ans,k,m;
ll co[2007][2007];
ll mn=INFL,mx;
bool czy(ll x){
for(ll i=0;i<n;i++){
ll l1=INF,r1=0,l2=INF,r2=0;
for(ll j=0;j<m;j++){
if(co[i][j]-mn>x){
l1=min(l1,j);
r1=max(r1,j);
}
if(mx-co[i][j]>x){
l2=min(l2,j);
r2=max(r2,j);
}
}
if(r1>=l2 && r2>=l1)
return 0;
}
// cout<<"\n\n\n";
for(ll j=0;j<m;j++){
ll l1=INF,r1=0,l2=INF,r2=0;
for(ll i=0;i<n;i++){
if(co[i][j]-mn>x){
l1=min(l1,i);
r1=max(r1,i);
}
if(mx-co[i][j]>x){
l2=min(l2,i);
r2=max(r2,i);
}
}
// cout<<l1<<" "<<r1<<" "<<l2<<" "<<r2<<"\n";
if(r1>=l2 && r2>=l1)
return 0;
}
return 1;
}
int main()
{
ios_base::sync_with_stdio(0);cin.tie(0);
cin>>n>>m;
for(ll i=0;i<n;i++){
for(ll j=0;j<m;j++){
cin>>co[i][j];
mn=min(mn,co[i][j]);
mx=max(mx,co[i][j]);
}
}
ll pocz=0;
ll kon=1000000000;
while(pocz!=kon){
ll mid=(pocz+kon)/2;
if(czy(mid))
kon=mid;
else
pocz=mid+1;
}
cout<<pocz;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |