文件详细信息
本文件的大小为 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;
}