Cod sursa(job #74242)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 24 iulie 2007 13:06:58
Problema BMatrix Scor 12
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#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;
}