Cod sursa(job #2350309)

Utilizator mihai10102Bodnaruc Mihai mihai10102 Data 21 februarie 2019 11:03:05
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.55 kb
#include <fstream>

using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,a[101][101],b[101][101],mi,lm,cm;
int prx,pry,pjx,pjy;
int c[2][10001],ic,sc;
void cit()
{
    char c[101];
    int i=0,j;
    f>>n>>m;
    f.getline(c,101);
    for(i=1; i<=n; i++)
    {
        f.getline(c,101);
        for(j=0; j<m; j++)
        {
            if(c[j]==' ')
                a[i][j+1]=b[i][j+1]=0;
            if(c[j]=='X')
                a[i][j+1]=b[i][j+1]=-1;
            if(c[j]=='R')
            {
                prx=i;
                pry=j+1;
                a[i][j+1]=1;
                b[i][j+1]=0;
            }
            if(c[j]=='J')
            {
                a[i][j+1]=0;
                b[i][j+1]=1;
                pjx=i;
                pjy=j+1;
            }
        }
    }
    for(i=1; i<=n+1; i++)
    {
        a[i][0]=b[i][0]=-1;
        a[i][m+1]=b[i][m+1]=-1;
    }
    for(i=1; i<=m+1; i++)
    {
        a[0][i]=b[0][i]=-1;
        a[n+1][i]=b[n+1][i]=-1;
    }
}
void rez(int z[101][101],int x,int y)
{
    ic=sc=1;
    int l,s;
    c[1][ic]=x;
    c[2][ic]=y;
    g<<x<<' ' << y << endl;
    g<<c[1][ic] << ' '<< c[2][ic]<<endl;
    z[x][y]=1;
    while(ic<=sc)
    {
        l=c[1][ic];
        s=c[2][ic];
        if(!z[l-1][s])
        {
            sc++;
            c[1][sc]=l-1;
            c[2][sc]=s;
            z[l-1][s]=z[l][s]+1;
        }
        if(!z[l+1][s])
        {
            sc++;
            c[1][sc]=l+1;
            c[2][sc]=s;
            z[l+1][s]=z[l][s]+1;
        }
        if(!z[l][s-1])
        {
            sc++;
            c[1][sc]=l;
            c[2][sc]=s-1;
            z[l][s-1]=z[l][s]+1;
        }
        if(!z[l][s+1])
        {
            sc++;
            c[1][sc]=l;
            c[2][sc]=s+1;
            z[l][s+1]=z[l][s]+1;
        }
        ic++;
    }
    for(int i=1;i<=2;i++)
    {
    for(int j=1;j<=sc;j++)
      g<<c[i][j]<<' ';
      g<<endl;
    }
}
void afis(int z[101][101])
{
    int i,j;
    for(i=0; i<=n+1; i++)
    {
        for(j=0; j<=m+1; j++)
            g<<z[i][j]<<' ';
        g<<endl;
    }
}
int main()
{
    cit();
    ic=sc=1;
    rez(a,prx,pry);
    ic=sc=1;
    rez(b,pjx,pjy);
    afis(a);
    g<<endl;
    afis(b);
    int i,j;
    mi=n*m+1;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        if(a[i][j]==b[i][j] && a[i][j]>0)
          if(a[i][j]<mi)
    {
        mi=a[i][j];
        lm=i;
        cm=j;
    }
    g<<mi<<' '<<lm<<' '<<cm;
}