整理コード
1707 ワード
#include
#include
#include
#include
#include
using namespace std;
struct dot//
{
int x;
int y;
int h;
};
dot line[20000]; //
int height[120][120]; // input
int len[120][120]; //dp ,
int cmp( const void *a ,const void *b){ //
if((*(dot *)a).h>(*(dot *)b).h)
return 1;
else return -1;
}
int main (){
int m,n;
cin>>m>>n;
int i,j;
int flag=-1;
int max=0;
for(i=1;i<=m;i++){
for(j=1;j<=n;j++)
{
flag++;
scanf("%d",&height[i][j]);
line[flag].x=i;
line[flag].y=j;
line[flag].h=height[i][j];
}
} //
qsort(line,m*n,sizeof(line[0]),cmp); // h
for(i=0;i=len[line[i].x][line[i].y+1])
{
len[line[i].x][line[i].y+1]=len[line[i].x][line[i].y]+1;
}
if(height[line[i].x][line[i].y]=len[line[i].x+1][line[i].y])
{
len[line[i].x+1][line[i].y]=len[line[i].x][line[i].y]+1;
}
if(height[line[i].x][line[i].y]=len[line[i].x][line[i].y-1])
{
len[line[i].x][line[i].y-1]=len[line[i].x][line[i].y]+1;
}
if (height[line[i].x][line[i].y]=len[line[i].x-1][line[i].y])
{
len[line[i].x-1][line[i].y]=len[line[i].x][line[i].y]+1;
}
} //
for(i=1;i<=m;i++) {
for(j=1;j<=n;j++){
if(len[i][j]>max)
max=len[i][j];
}
} // len ,
cout<