Cod sursa(job #150250)

Utilizator flo3murgociMocanu Florin flo3murgoci Data 6 martie 2008 19:32:03
Problema Teren Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 1.48 kb
#include<fstream.h>

int a[300][300]={1},k,poz,indl[100],indc[100];

	void fill(int i,int j)
 {k++;
 if (a[i][j]==0)
  {
    a[i][j]=1;
    indl[++poz]=i-1;
    indc[poz]=j;
    fill(i-1,j);

    indl[++poz]=i-1;
    indc[poz]=j+1;
    fill(i-1,j+1);

    indl[++poz]=i;
    indc[poz]=j+1;
     fill(i,j+1);

    indl[++poz]=i+1;
    indc[poz]=j+1;
    fill(i+1,j+1);

    indl[++poz]=i+1;
    indc[poz]=j;
     fill(i+1,j);

    indl[++poz]=i+1;
    indc[poz]=j-1;
    fill(i+1,j-1);

    indl[++poz]=i;
    indc[poz]=j-1;
     fill(i,j-1);

    indl[++poz]=i-1;
    indc[poz]=j-1;
    fill(i-1,j-1);
   }

}

void main()
{int n,m,p,q,l,maxl,minl,maxc,minc,y,x,max,i,j,v[100];

ifstream f("teren.in");
ofstream g("teren.out");
f>>n>>m>>x;
for(i=1;i<=n;i++)
 for(j=1;j<=m;j++)
   f>>a[i][j];
int gata;
do
{gata=0;
for(i=1;i<=n&&!gata;i++)
for(j=1;j<=m&&!gata;j++)
   if(a[i][j]==0)
    {p=i;
    q=j;
    gata=1;}
 k=0;
 fill(p,q);
for(i=1;i<=n;i++)
{for(j=1;j<=m;i++)
 cout<<a[i][j]<<' ';
 cout<<endl;}
maxl=indl[1];minl=indl[1];
for(i=1;i<=poz;i++)
  {if(maxl<indl[i])
     maxl=indl[i];
  if(minl>indl[i])
     minl=indl[i];}

maxc=indc[1];minc=indc[1];
for(i=1;i<=poz;i++)
  {if(maxc<indc[i])
     maxc=indc[i];
  if(minc>indc[i])
     minc=indc[i];}
y=(maxl-minl)*(maxc-minc);
 if(y<=x)
  v[++l]=k;

}
while(gata==1);

/*max=v[1];
 for(i=1;i<=l;i++)
   if(max<v[i])
     max=v[i];
g<<max;*/
f.close();
g.close();
}