#define mp make_pair
#define pb push_back
using namespace std;
typedef long long LL;
typedef pair<int,int> PII;
inline LL ()
{
LL x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
const int N=1008;
int n,m,t;
int a[N][N],maxi[N][N][8],mini[N][N][8];
int len,ans=INT_MAX;
int main()
{
n=read();m=read();t=read();
memset(mini,0x3f,sizeof(maxi));
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
maxi[i][j][0]=mini[i][j][0]=a[i][j]=read();
}
}
for(int k=1;(1<<k)<=t;++k){
for(int i=1;i+(1<<k)-1<=n;++i){
for(int j=1;j+(1<<k)-1<=m;++j){
maxi[i][j][k]=max(max(maxi[i][j][k-1],maxi[i+(1<<(k-1))][j][k-1]),
max(maxi[i][j+(1<<(k-1))][k-1],maxi[i+(1<<(k-1))][j+(1<<(k-1))][k-1]));
mini[i][j][k]=min(min(mini[i][j][k-1],mini[i+(1<<(k-1))][j][k-1]),
min(mini[i][j+(1<<(k-1))][k-1],mini[i+(1<<(k-1))][j+(1<<(k-1))][k-1]));
}
}
}
len=log2(t);
for(int i=1;i+t-1<=n;++i){
for(int j=1;j+t-1<=m;++j){
ans=min(ans,max(max(maxi[i][j][len],maxi[i+t-(1<<len)][j][len]),max(maxi[i][j+t-(1<<len)][len],maxi[i+t-(1<<len)][j+t-(1<<len)][len]))
-min(min(mini[i][j][len],mini[i+t-(1<<len)][j][len]),min(mini[i][j+t-(1<<len)][len],mini[i+t-(1<<len)][j+t-(1<<len)][len])));
}
}
printf("%d",ans);
return 0;
}
近期评论