Pagini recente » Cod sursa (job #987023) | Cod sursa (job #833759) | Cod sursa (job #898473) | Cod sursa (job #1675774) | Cod sursa (job #2187369)
#include <fstream>
#include <climits>
#include <cstring>
using namespace std;
ifstream f("bmatrix.in");
ofstream g("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()
{
f>>n>>m;
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
f>>a[i][j];
}
}
for(i=1; i<=n; i++)
{
for(j=1; j<=m; j++)
{
if(a[i][j]=='0')v[j]++;
else v[j]=0;
x=INT_MAX;
y=0;
for(k=j; k>=1; k--)
{
x=min(x,v[k]);
y=max(y,x*(j-k+1));
}
st[i]=max(st[i],max(st[i-1],y));
sus[j]=max(sus[j],max(sus[j-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]++;
else v[j]=0;
x=INT_MAX;
y=0;
for (k=j; k<=m; k++)
{
x=min(x,v[k]);
y=max(y,x*(k-j+1));
}
dr[i]=max(dr[i],max(dr[i+1],y));
jos[j]=max(jos[j],max(jos[j+1],y));
}
sol=0;
for(i=1; i<n; i++)
sol=max(sol,st[i]+dr[i+1]);
for(j=1; j<m; j++)
sol=max(sol,sus[j]+jos[j+1]);
g<<sol<<" ";
return 0;
}