20pts,题
# include <bits/stdc++.h>
using namespace std;
int n, m, a[110][110], f[110][110], ans;
int dfs (int x, int y){
if (x > n || x < 1 || y > m || y < 1) return 0;
if (f[x][y] != -1) return f[x][y];
ans = 0;
if (a[x][y] > a[x][y + 1]) ans = max (ans, dfs (x, y + 1));
if (a[x][y] > a[x][y - 1]) ans = max (ans, dfs (x, y - 1));
if (a[x][y] > a[x + 1][y]) ans = max (ans, dfs (x + 1, y));
if (a[x][y] > a[x - 1][y]) ans = max (ans, dfs (x - 1, y));
return f[x][y] = ans + 1;
}
int main (){
scanf ("%d %d", &n, &m);
memset(f, -1, sizeof(f));
for (int i = 1;i <= n;i++){
for (int j = 1;j <= m;j++){
ans = max(ans, dfs(i, j));
}
}
printf ("%d", ans);
return 0;
}