#include<bits/stdc++.h>
using namespace std;
int n,m,i,j,ans=1,s,a[1001][1001],f[1001][1001];
int d[4][2]= {0,1,1,0,-1,0,0,-1};
void dfs(int x,int y,int st)
{
if(f[x][y]>st)
{
return ;
}
f[x][y]=max(f[x][y],st);
for(int i=0; i<4; i++)
{
int dx=x+d[i][0];
int dy=y+d[i][1];
if(a[x][y]>a[dx][dy]&&dx>=1&&dx<=n&&dy>=1&&dy<=m)
{
dfs(dx,dy,st+1);
}
else
ans=max(ans,st);
}
}
int main()
{
cin>>n>>m;
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cin>>a[i][j];
}
}
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
dfs(i,j,1);
}
}
cout<<ans;
return 0;
}
[SHOI2002] 滑雪
P1434