Pagini recente » Cod sursa (job #733817) | Cod sursa (job #1675736) | Cod sursa (job #1049508) | Cod sursa (job #837664) | Cod sursa (job #2799508)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bmatrix.in");
ofstream fout("bmatrix.out");
char c,a[205][205];
int v[205],n,m,i,j,x,y,sol,k,st[205],dr[205],sus[205],jos[205];
int main()
{
fin>>n>>m;
for(i=1;i<=n;i++)for(j=1;j<=m;j++)fin>>a[i][j];
for(i=1;i<=n;i++)
{
for(j=1; j<=m; j++)
{
if(a[i][j]=='0')v[j]++;
x=10005;
y=0;
for(k=j; k>=1; k--)
{
x=min(x,v[k]);
y=max(y,x*(j-k+1));
}
st[j]=max(st[j],max(st[j-1],y));
sus[i]=max(sus[i],max(sus[i-1],y));
}
}
memset(v,0,sizeof(v));
for (i=n; i>=1; i--)
for (j=m; j>=1; j--)
{
if (a[i][j]=='0') v[j]++;
x=10005;
y=0;
for (k=j; k<=m; k++)
{
x=min(x,v[k]);
y=max(y,x*(k-j+1));
}
dr[j]=max(dr[j],max(dr[j+1],y));
jos[i]=max(jos[i],max(jos[i+1],y));
}
for(i=1; i<n; i++)sol=max(sol,sus[i]+jos[i+1]);
for(j=1; j<m; j++)sol=max(sol,st[j]+dr[j+1]);
fout<<sol;
return 0;
}