丨Sky灬丨无惧 @ 2020-01-17 16:34:32
#include<bits/stdc++.h>
using namespace std;
int n,m,rtt[1000][1000],ftt[1000][1000],ans=1,zx[4]= {0,0,1,-1},zy[4]= {1,-1,0,0},jx,jy;
void ctt(int x,int y) {
//cout<<x<<" "<<y<<endl;
if(ftt[x][y]!=0) {
ftt[jx][jy]=max(ftt[jx][jy],ftt[x][y]);
return;
}
ftt[x][y]=1;
for(int i=0; i<4; i++) {
int x2=x+zx[i];
int y2=y+zy[i];
if(x2>0&&y2>0&&x2<=n&&y2<=m&&rtt[x][y]>rtt[x2][y2]) {
jx=x;
jy=y;
ctt(x2,y2);
ftt[x][y]=max(ftt[x][y],ftt[x2][y2]+1);
}
}
}
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
cin>>rtt[i][j];
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
ctt(i,j);
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
ans=max(ans,ftt[i][j]);
}
}
cout<<ans;
return 0;
}