Pagini recente » Cod sursa (job #548489) | Cod sursa (job #1898587) | Cod sursa (job #2136373) | Cod sursa (job #2497932) | Cod sursa (job #1254950)
#include <fstream>
using namespace std;
ifstream fin("obmax.in");
ofstream fout("obmax.out");
int a[30][30],b[30][30],q[2][300],l,c,x,y,i,j,l1,l2,l3,c1,c2,c3,k,m,n,OK,p,u,nr,nr1,r,Max,r1;
int main()
{
fin>>n>>m;
int n1=n;
int m1=m;
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
fin>>a[i][j];
}
for(i=0;i<=m+1;i++)
{
a[0][i]=b[0][i]=-3;
a[n+1][i]=b[n+1][i]=-3;
}
for(i=0;i<=n+1;i++)
{
a[i][0]=b[i][0]=-3;
a[i][m+1]=b[i][m+1]=-3;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(a[i][j]==1)
{
p=u=1;
nr=1;
a[i][j]=-1;
q[0][p]=i;
q[1][p]=j;
while(p<=u)
{
x=q[0][p];
y=q[1][p];
for(k=0;k<8;k++)
{
l=x+dx[k];
c=y+dy[k];
if(a[l][c]==1)
{
a[l][c]=-1;
nr++;
q[0][++u]=l;
q[1][u]=c;
}
}
p++;
}
}
if(nr>Max)
{
Max=nr;
l2=i;
c2=j;
}
}
int OK1=0;
p=u=1;
q[0][p]=l2;
q[1][p]=c2;
a[l2][c2]=2;
while(p<=u)
{
x=q[0][p];
y=q[1][p];
for(k=0;k<8;k++)
{
l=x+dx[k];
c=y+dy[k];
if(a[l][c]==-1)
{
a[l][c]=-2;
q[0][++u]=l;
q[1][u]=c;
}
}
p++;
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{ OK=1;
for(int t=1;t<=u;t++)
{
if(a[i+q[0][t]-l2][j+q[1][t]-c2]!=0)
{
OK=0;
}
}
if(OK==1)
{
OK1=1;
l3=i;
c3=j;
break;
}
}
}
/*p=u=1;
b[i][j]=r;
q[0][p]=i;
q[1][p]=j;
l1=l2;
c1=c2;
OK=1;
nr1=1;
while(p<=u)
{
x=q[0][p];
y=q[1][p];
for(k=0;k<8;k++)
{
l=x+dx[k];
c=y+dy[k];
if(a[l][c]==0&&a[l1+dx[k]][c1+dy[k]]==-1&&b[l][c]!=r)
{
l1+=dx[k];
c1+=dy[k];
b[l][c]=r;
q[0][++u]=l;
q[1][u]=c;
nr1++;
}
if(a[l][c]==-1&&a[l1+dx[k]][c1+dy[k]]==-1)
{
OK=0;
break;
}
}
if(OK==0)
break;
p++;
}
}
if(nr1==Max)
{
OK1=1;
l3=i;
c3=j;
r1=r;
break;
}
}
if(nr1==Max)
break;
}*/
/*for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
fout<<b[i][j]<<" ";
fout<<"\n";
}*/
p=u=1;
//fout<<l3<<" "<<c3<<'\n';
q[0][p]=l2;
q[1][p]=c2;
if(OK1==1){
Max--;
p=u=1;
a[l3][c3]=3;
while(p<=u)
{
x=q[0][p];
y=q[1][p];
for(k=0;k<8;k++)
{
l=x+dx[k];
c=y+dy[k];
if(a[l][c]==-2&&(a[l+l3-l2][c+c3-c2]==0||a[l+l3-l2][c+c3-c2]==3))
{ Max--;
a[l+l3-l2][c+c3-c2]=3;
a[l][c]=2;
q[0][++u]=l;
q[1][u]=c;
}
}
p++;
}
}
else{
p=u=1;
q[0][p]=l2;
q[1][p]=c2;
a[l2][c2]=2;
while(p<=u)
{
x=q[0][p];
y=q[1][p];
for(k=0;k<8;k++)
{
l=x+dx[k];
c=y+dy[k];
if(a[l][c]==-2)
{
a[l][c]=2;
q[0][++u]=l;
q[1][u]=c;
}
}
p++;
}
}
for(i=1;i<=n1;i++)
{
for(j=1;j<=m1;j++)
{
if(a[i][j]==-1)
a[i][j]=1;
}
}
for(i=1;i<=n1;i++)
{
for(j=1;j<=m1;j++)
fout<<a[i][j]<<" ";
fout<<"\n";
}
return 0;
}