Cod sursa(job #74242)
#include<fstream.h>
//using namespace std;
int a[200][200],N,M,max=-32042;
char b[200][200];
void citire(){
ifstream fin("bmatrix.in");
fin>>N>>M;
for (int i=0;i<N;i++)
for (int j=0;j<M;j++){
fin>>b[i][j];
a[i][j]=b[i][j]-'0';}
fin.close();
}
void egal (){
for (int i=0;i<N;i++)
for (int j=0;j<M;j++)
a[i][j]=b[i][j]-'0';
}
long arie (){
long S=0,nr1=0,nr2=0,nr11=0,nr22=0,max2,S2;
for (int i=0;i<N;i++)
for (int j=0;j<M;j++)
if (a[i][j]==0){
nr1=1;
nr2=1;
S2=0;
max2=-230000;
for (int ii=i+1;ii<N;ii++)
if (a[ii][j]==0){
nr1++;
a[ii][j]=1;}
else
break;
for (int jj=j+1;jj<M;jj++)
if (a[i][jj]==0){
nr2++;
for (int iii=i;iii<i+nr1;iii++)
a[iii][jj]=1;}
else
break;
S=nr1*nr2;
for (int q=0;q<N;q++)
for (int w=0;w<M;w++)
if (a[q][w]==0){
nr11=1;
nr22=1;
for (int ii=q+1;ii<N;ii++)
if (a[ii][w]==0)
nr11++;
else
break;
for (int jj=w+1;jj<N;jj++)
if (a[q][jj]==0)
nr22++;
else
break;
S2=nr11*nr22;
if (S2>max2)
max2=S2; }
if (max2+S>max)
max=S+max2;
egal;}
return max;
}
int main(){
citire();
ofstream fout("bmatrix.out");
fout<<arie();
fout.close();
return 0;
}