//
#include<bits/stdc++.h>
using namespace std;
//#define int long long
const int N=555;
int in[N][N],dp_max[N][N],dp_min[N][N]; // 空间优化
void solve()
{
int n,m,k_in;
scanf("%d%d%d",&n,&m,&k_in );
for( int i=1;i<=n;i++ )
for( int j=1;j<=m;j++ )
{
scanf("%d",&in[i][j] );
dp_max[i][j]=dp_min[i][j]=in[i][j];
}
// k:边长 i:长 j:宽
for( int k=2;k<=min( n,m );k++ )
for( int i=1;i+k-1<=n;i++ ) // -1
for( int j=1;j+k-1<=m;j++ ) // -1
{ // -1 // -1
dp_max[i][j]=max( max( dp_max[i+1][j],dp_max[i][j+1] ),max( in[i][j],in[i+k-1][j+k-1] ) );
dp_min[i][j]=min( min( dp_min[i+1][j],dp_min[i][j+1] ),min( in[i][j],in[i+k-1][j+k-1] ) );
// 从小到大枚举
if( dp_max[i][j]-dp_min[i][j]>=k_in )
{
printf("%d\n",k ); return ;
}
}
printf("-1\n"); // 如果没有解,输出 -1
}
signed main()
{
solve();
return 0;
}
作者 | 乐意奥AI