第2个测试点RE求调
查看原帖
第2个测试点RE求调
528751
wanys楼主2024/7/4 15:31
#include <iostream>
using namespace std;
int a[5001][5001],sum[8001][8001],t=0,sz[5001];
int n,m;
int maxnumz(int z){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(z<=a[i][j]){
				z=a[i][j];
			}
		}
	}
	return z;
}
void findmaxnum(int maxn){
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			if(maxn==a[i][j]){
				sum[t][0]=maxn;
				sum[t][1]=i;
				sum[t][2]=j;
				t++;
			}
		}
	}
}
int find2max(int i){
		int maxz=a[sum[i][1]-1][sum[i][2]];
		if(maxz<a[sum[i][1]+1][sum[i][2]]){
			maxz=a[sum[i][1]+1][sum[i][2]];
		}
		if(maxz<a[sum[i][1]][sum[i][2]+1]){
			maxz=a[sum[i][1]][sum[i][2]+1];
		}
		if(maxz<a[sum[i][1]][sum[i][2]-1]){
			maxz=a[sum[i][1]][sum[i][2]-1];
		}
	return maxz;
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			char z;
			cin>>z;
			if(z=='#'){
				a[i][j]=-1;
			}else{
				a[i][j]=int(z);
			}
		}
	}
	int maxnum=maxnumz(0);
	findmaxnum(maxnum);
	for(int i=0;i<t;i++){
		sz[i]=find2max(i); 
	}
	int maxsum=0;
	for(int i=0;i<t;i++){
		if(maxsum<sz[i]){
			maxsum=sz[i];
		}
	}
	if(maxsum==-1||maxsum==maxnum){
		cout<<char(maxnum); 
	}else{
		cout<<char(maxnum)<<char(maxsum); 
	}
	return 0;
}

第2个测试点RE求调

2024/7/4 15:31
加载中...