15297517869a @ 2022-04-04 11:47:08
#include<iostream>
#include<algorithm>
using namespace std;
int tab[105][105];
int val[105][105];
int czx[]={0,0,1,-1};
int czy[]={1,-1,0,0};
int dfs(int ,int);
int row,col;
int res=0;
int main()
{
cin>>row>>col;
for(int i=1;i<=row;i++)
{
for(int j=1;j<=col;j++)
{
int a;
cin>>a;
tab[i][j]=a;
}
}
for(int i=1;i<=row;i++)
for(int j=1;j<=col;j++)
if(val[i][j]==0)
dfs(i,j);
cout<<res<<endl;
return 0;
}
int dfs(int m,int n)
{
if(val[m][n]!=0)
return val[m][n];
int maxv=0;
int xx,yy;
for(int i=0;i<4;i++)
{
xx=m+czx[i];
yy=n+czy[i];
if(xx>=1&&xx<=row&&yy>=1&&yy<=col&&tab[m][n]>=tab[xx][yy])
{
maxv=max(maxv,dfs(xx,yy));
}
}
maxv+=1;
val[m][n]=maxv;
res=max(res,val[m][n]);
return maxv;
}