Cod sursa(job #2423351)

Utilizator cosceexcosceex cosceex Data 21 mai 2019 09:54:07
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.62 kb
#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;
}