#include<stdio.h> #include<string.h> int hgt[105][105],f[105][105]; int di[4][2]={-1,0,1,0,0,-1,0,1}; int r,c,max; int out(int p,int q) { if(p<1||p>r||q<1||q>c) return 1; return 0; } int dfs(int p,int q) { int i,num; if(f[p][q]!=1) return f[p][q]; else { for(i=0;i<4;i++) { int a=p+di[i][0],b=q+di[i][1]; if(!out(a,b)&&hgt[p][q]>hgt[a][b]) { num=dfs(a,b); if(f[p][q]<num+1) f[p][q]=num+1; } } return f[p][q]; } } int main() { freopen("ski10.in","r",stdin);/// freopen("out.txt","w",stdout);/// while(scanf("%d%d",&r,&c)!=EOF) { int i,j,t; for(i=1;i<=r;i++) { for(j=1;j<=c;j++) scanf("%d",&hgt[i][j]); } max=-1; for(i=1;i<=r;i++) { for(j=1;j<=c;j++) f[i][j]=1; } for(i=1;i<=r;i++) { for(j=1;j<=c;j++) { t=dfs(i,j); if(t>max) max=t; } } printf("%d/n",max); } return 0; }