文件详细信息

下载本文件

本文件的大小为 853 字节。

#include<cstdio>
const int maxn=2005;
int n,m;
char s[maxn][maxn];
int l[maxn][maxn],r[maxn][maxn],up[maxn][maxn];
void chkmax(int&a,const int b){
	a<b&&(a=b);
}
void chkmin(int&a,const int b){
	a>b&&(a=b);
}
int ans;
int main(){
	scanf("%d%d",&n,&m);
	ans=n>m?n:m;
	for(int i=1;i<=n;i++)scanf("%s",s[i]+1);
	n--,m--;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			s[i][j]=!((s[i][j]^s[i][j+1]^s[i+1][j]^s[i+1][j+1])&1);
	for(int i=1;i<=n;i++){
		l[i][1]=1;
		for(int j=2;j<=m;j++)l[i][j]=(s[i][j]&&s[i][j-1])?l[i][j-1]:j;
		r[i][m]=m;
		for(int j=m-1;j>=1;j--)r[i][j]=(s[i][j]&&s[i][j+1])?r[i][j+1]:j;
		for(int j=1;j<=m;j++)
			if(s[i][j]){
				if(s[i-1][j]){
					chkmax(l[i][j],l[i-1][j]);
					chkmin(r[i][j],r[i-1][j]);
				}
				up[i][j]=up[i-1][j]+1;
				chkmax(ans,(r[i][j]-l[i][j]+2)*(up[i][j]+1));
			}
	}
	printf("%d\n",ans);
	return 0;
}