wjk20050306 @ 2021-04-05 20:14:42
#include<bits/stdc++.h>
using namespace std;
int r,c,mp[150][150],len[150][150];
int dx[4]= {0,0,1,-1},dy[4]= {1,-1,0,0};
int cnt=0,q=0,p=0;
bool vis[150][150];
void ch(int x,int y) {
if(vis[x][y]) {
len[q][p]=cnt+len[x][y];
return;
}
len[x][y]=1;
int tmax=-10,a=0,b=0;
for(int i=0; i<=3; i++) {
if(x+dx[i]>0&&x+dx[i]<=r&&y+dy[i]>0&&y+dy[i]<=c) {
a=x+dx[i];
b=y+dy[i];
if(mp[a][b]<mp[x][y]) {
cnt++;
ch(a,b);
len[x][y]=max(len[a][b]+1,len[x][y]);
}
}
}
return;
}
void solve() {
for(int i=1; i<=r; i++) {
for(int j=1; j<=c; j++) {
cnt=0;
q=i,p=j;
if(vis[q][p]) continue;
ch(q,p);
}
}
}
int ans=-10;
void find() {
for(int i=1; i<=r; i++) {
for(int j=1; j<=c; j++) {
ans=max(ans,len[i][j]);
}
}
}
int main() {
scanf("%d%d",&r,&c);
for(int i=1; i<=r; i++) {
for(int j=1; j<=c; j++) scanf("%d",&mp[i][j]);
}
solve();
find();
printf("%d",ans);
return 0;
}