Cod sursa(job #1657151)

Utilizator TostiHirlea Iustinian Tosti Data 20 martie 2016 10:55:26
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.03 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");

const int dx[]={0,1,1,1,0,-1,-1,-1};
const int dy[]={1,1,0,-1,-1,-1,0,1};

int rx,ry,jx,jy;
int n,m;
int a[100][100],b[100][100];

void afisare(int a[100][100])
{
    int i,j;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
            g<<a[i][j]<<" ";
        g<<endl;
    }
}
void citire()
{
    char s[101];
    int i,j;
    f>>n>>m;
    f.get();
    for(i=1;i<=n;i++)
    {
        f.getline(s,101,'\n');
        for(j=0;j<m;j++)
        {
            a[i][j+1]=0;
            b[i][j+1]=0;
            if(s[j]=='X')
                a[i][j+1]=b[i][j+1]=1;
            if(s[j]=='R')
            {
                rx=i;
                ry=j+1;
            }
            if(s[j]=='J')
            {
                jx=i;
                jy=j+1;
            }
        }
        //f.get();
    }
    //afisare(a);
    //g<<endl;
    //afisare(b);
    //g<<endl;
}
int bune(int i,int j)
{
    return (i>=1 and i<=n and j>=1 and j<=m);
}

void lee(int n,int m,int a[100][100],int i,int j)
{
    int cx[10000],cy[10000],k,ii,jj,pi,ps;
    cx[0]=i;
    cy[0]=j;
    a[i][j]=1;
    pi=0;
    ps=0;
    while(pi<=ps)
    {
        for(k=0;k<8;k++)
        {
            ii=cx[pi]+dx[k];
            jj=cy[pi]+dy[k];
            if(bune(ii,jj)==1)
                if(a[ii][jj]==0)
                {
                    ps=ps+1;
                    cx[ps]=ii;
                    cy[ps]=jj;
                    a[ii][jj]=a[cx[pi]][cy[pi]]+1;
                }
        }
        pi=pi+1;
    }
}

int main()
{
    citire();
    lee(n,m,a,rx,ry);
    lee(n,m,b,jx,jy);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            if(a[i][j]==b[i][j] and a[i][j]!=0 and a[i][j]!=1)
            {
                g<<a[i][j]<<" "<<i<<" "<<j;
                j=m+1;
                i=n+1;
            }
    //afisare(a);
    //g<<endl;
    //afisare(b);
    return 0;
}