Pagini recente » Cod sursa (job #1891987) | Cod sursa (job #720905) | Cod sursa (job #2944523) | Cod sursa (job #423351) | Cod sursa (job #2423351)
#include <bits/stdc++.h>
using namespace std;
ifstream f("date.in");
ofstream g("date.out");
struct mat{
int n,m;
int a[101][101];
};
int dx[]={1,1,1,0,-1,-1,-1,0};
int dy[]={-1,0,1,1,1,0,-1,-1};
int verif(int x,int y,mat A)
{
return(x>0 && x<=A.n && y>0 && y<=A.m);
}
void fil1(int l,int c,mat A,mat B,mat C){
if(B.a[l][c]==0 || (B.a[l][c]==1 && A.a[l][c]==0))
{
for(int i=0;i<8;i++)
{
int l1=l+dx[i];
int c1=c+dy[i];
C.a[l1][c1]=0;
for(int k=0;k<8;k++)
if(A.a[l1+dx[k]][c1+dy[k]]==-1 && verif(l1+dx[k],c1+dy[k],A))
C.a[l1][c1]++;
}
}
}
mat B;
void afis(mat A)
{
for(int i=1;i<=A.n;i++ , g<<'\n')
for(int j=1;j<=A.m;j++)
g<<A.a[i][j]<<" ";
}
void fct(mat A,int l,int c){
mat C;
B.n=C.n=A.n;
B.m=C.m=A.m;
// pctb(A,B);
for(int i=1;i<=C.n;++i)
for(int j=1;j<=C.m;j++)
C.a[i][j]=-2;
if(A.a[l][c]==-1)
afis(A);
else if(B.a[l][c]==1){
C.a[l][c]=0;
for(int k=0;k<8;k++)
if(A.a[l+dx[k]][c+dy[k]]==-1 && verif(l+dx[k],c+dy[k],A))
C.a[l][c]++;
afis(C);
}
else{
C.a[l][c]=0;
fil1(l,c,A,B,C);
afis(C);
}
}
int main(){
mat A;
int l,c;
f>>A.n>>A.m;
for(int i=1;i<=A.n;i++)
for(int j=1;j<=A.m;j++)
f>>A.a[i][j];
for(int i=1;i<=A.n;i++)
for(int j=1;j<=A.m;j++)
f>>B.a[i][j];
f>>l>>c;
fct(A,l,c);
return 0;
}