老黎 @ 2019-05-01 14:24:44
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int r,c,a[105][105],b[105][105],movei[4]={1,0,0,-1},movej[4]={0,1,-1,0};
struct p{
int x,y,h;
}que[10500];
bool cmp(p a,p b){
return a.h<=b.h;
}
int main(){
scanf("%d%d",&r,&c);
int k=1;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++,k++){
scanf("%d",&a[i][j]);
b[i][j]=1;
que[k].x=i;que[k].y=j;que[k].h=a[i][j];
}
}
sort(que,que+k,cmp);
for(int t=1;t<k;t++){
for(int i=0;i<4;i++){
int xi=que[t].x+movei[i],yi=que[t].y+movej[i];
if(xi>0&&xi<=r&&yi>0&&yi<=c){
if(a[xi][yi]>que[t].h){
b[xi][yi]=max(b[xi][yi],b[que[t].x][que[t].y]+1);
}
}
}
}
int maxn=0;
for(int i=1;i<=r;i++){
for(int j=1;j<=c;j++){
maxn=max(maxn,b[i][j]);
}
}
printf("%d",maxn);
return 0;
}