Pagini recente » Cod sursa (job #1206283) | Cod sursa (job #2088677) | Cod sursa (job #401757) | Cod sursa (job #1891221) | Cod sursa (job #341934)
Cod sursa(job #341934)
#include <stdio.h>
#include <fstream.h>
#define LG 512
char ch,a[LG][LG];
int mat[LG][LG];
int main()
{
int min,p,rez=0,rez2=0,nr,n,m,i,j,h;
ifstream f("bmatrix.in");
ofstream g("bmatrix.out");
f>>n>>m;
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j)
{
f.get(ch);
if(ch=='0') a[i][j]=1;
else a[i][j]=0;
}
scanf("%c", &ch);
}
for(j=1;j<=m;++j)
{
nr=0;
for(i=1;i<=n;++i)
if(a[i][j]==1) mat[i][j]=++nr;
else
{
mat[i][j]=0;
nr=0;
}
}
int x,y,xx,yy;
for(i=1;i<=n;++i)
for(h=1;h<=m;++h)
{
nr=0;
min=mat[i][h];
for(j=h;j<=m;++j)
{
++nr;
if(mat[i][j]<min) min=mat[i][j];
if(!mat[i][j])
{
min=3;
nr=0;
}
p=min*nr;
if(p>rez)
{
rez=p;
x=i-min+1;
y=j-nr+1;
xx=i;
yy=j;
}
}
}
for(int i=x;i<=xx;++i)
for(int j=y;j<=yy;++j)
a[i][j]=0;
for(j=1;j<=m;++j)
{
nr=0;
for(i=1;i<=n;++i)
if(a[i][j]==1) mat[i][j]=++nr;
else
{
mat[i][j]=0;
nr=0;
}
}
for(i=1;i<=n;++i)
for(h=1;h<=m;++h)
{
nr=0;
min=mat[i][h];
for(j=h;j<=m;++j)
{
++nr;
if(mat[i][j]<min) min=mat[i][j];
if(!mat[i][j])
{
min=3;
nr=0;
}
p=min*nr;
if(p>rez2) rez2=p;
}
}
g<<endl<<rez+rez2;
f.close();
g.close();
return 0;
}