80分求助
查看原帖
80分求助
1011122
gyx250楼主2024/5/9 21:35

开o2优化2,10会RE,不开WA

#include<bits/stdc++.h> 
using namespace std;
struct side{
	int x,y,z;
}g[105];
bool operator < (side x,side y){return x.z<y.z;}
int r,c,ans,anss,f[105][105],w[105][105];
bool dos(int x,int y,int z){
	if(x>r||x<=0||y<=0||y>c||w[x][y]>=z)return 0;
	else return 1;
}
int finds(int x,int y ,int z){
	int a=0;
	if(dos(x+1,y,z))a=max(a,f[x+1][y]);
	if(dos(x-1,y,z))a=max(a,f[x-1][y]);
	if(dos(x,y+1,z))a=max(a,f[x][y+1]);
	if(dos(x,y-1,z))a=max(a,f[x][y-1]);
	return a;
}
int main() {
    cin>>r>>c;
	for(int i=1;i<=r;i++)
	for(int j=1;j<=c;j++) 
	{cin>>w[i][j];g[++ans].x=i;g[ans].y=j;g[ans].z=w[i][j];}
	sort(g+1,g+ans+1);
	for(int i=1;i<=ans;i++)
	{
		f[g[i].x][g[i].y]=1+finds(g[i].x,g[i].y,g[i].z);
		anss=max(anss,f[g[i].x][g[i].y]);
	}
	cout<<anss;
}
2024/5/9 21:35
加载中...