50pts求调
查看原帖
50pts求调
492030
CityFish楼主2023/7/19 20:33
#include <iostream>
#include <algorithm>
#include <math.h>
using namespace std;

int n,m;
int f[10024];

struct Node{
	int x,y;
	int h;
};
Node nodes[10024];

bool cmp(Node A,Node B){
	return A.h < B.h;
}

void Init(){
	cin>>n>>m;
	for(int y = 1;y <= n;y++){
		for(int x = 1;x <= m;x++){
			cin>>nodes[(y-1)*n+x].h;
			nodes[(y-1)*n+x].x = x;
			nodes[(y-1)*n+x].y = y;
		}
	}
	sort(nodes+1,nodes+n*m+1,cmp);
}

void Work(){
	int ans = -1;
	for(int i = 1;i <= n*m;i++){
		f[i] = 1;
		for(int j = 1;j < i;j++){
			if((abs(nodes[i].x - nodes[j].x)==1 && (nodes[i].y - nodes[j].y==0))||(abs(nodes[i].y - nodes[j].y)==1 && (nodes[i].x - nodes[j].x==0))){
				f[i] = max(f[i],f[j]+1);
			}
		}
		ans = max(ans,f[i]);
	}
	cout<<ans<<endl;
}

int main(){
	Init();
	Work();
}
2023/7/19 20:33
加载中...