Pagini recente » Cod sursa (job #795652) | Cod sursa (job #2174326) | Cod sursa (job #557565) | Cod sursa (job #2313245) | Cod sursa (job #63002)
Cod sursa(job #63002)
#include<stdio.h>
int n,m,l,sol1,sol2;
char a[202][202];
FILE*g=fopen("bmatrix.out","w");
void del(int p, int k, int linie)
{
int i,j;
for(i=l;i<=linie;++i)
for(j=p;j<=k;++j)
a[i][j]='3';
}
void read()
{
int i,j;
FILE*f=fopen("bmatrix.in","r");
fscanf(f,"%d %d\n",&n,&m);
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j)
fscanf(f,"%c",&a[i][j]);
fscanf(f,"\n");
}
}
int maxim(int p, int k,int linie)
{
int area;
area=(linie-l+1)*(k-p+1);
del(p,k,linie);
return area;
}
int det_arie(int p, int k, int linie)
{
int i,j,arie,ok=1;
i=p; j=k;
while(i<=j)
{
if(a[linie][j]!='0') {ok=0; break;}
else { j--; i++;}
}
if(ok==1&&linie<n) return det_arie(p,k,linie+1);
else if (linie==n&&ok==1) return maxim(p,k,n);
else return maxim(p,k,linie-1);
}
void solve()
{
int i,j,p,area;
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
{
if(a[i][j]=='0')
{
for(p=m;p>=j;--p)
{
if(a[i][p]=='0')
{
l=i;
area=det_arie(j,p,i);
if(area>sol1)
{
sol2=sol1;
sol1=area;
}
else if (area>sol2) sol2=area;
}
}
}
}}
int main()
{
read();
solve();
fprintf(g,"%d",sol1+sol2);
return 0;
}