Cod sursa(job #1657146)

Utilizator YellowflashStefan Lupascu Yellowflash Data 20 martie 2016 10:44:29
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.06 kb
#include <iostream>
#include <fstream>
#include <cstring>

using namespace std;

ifstream f("rj.in");
ofstream g("rj.out");

const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
int lr,cr,lj,cj;


bool bune(int ii,int jj,int n,int m)
{
    return(ii>=0 and ii<n and jj>=0 and jj<m);
}

void lee(int n,int m,int a[][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,n,m))
                if(!a[ii][jj])
            {
                ps++;
                cx[ps]=ii;
                cy[ps]=jj;
                a[ii][jj]=a[cx[pi]][cy[pi]]+1;
            }
        }
        pi++;
    }
}

void citire(int &n,int &m,int a[][100],int mR[][100],int mJ[][100])
{
    int i,j;
    char x[101];
    f>>n>>m;
    f.get();

    for(i=0;i<n;i++)
      {

        f.getline(x,101,'\n');
        for(j=0;x[j];j++)
        {
            mR[i][j]=0;
            mJ[i][j]=0;
            if(x[j]=='R')
            {
                mR[i][j]=1;
                lr=i;
                cr=j;
            }

        if(x[j]=='J')
            {
                mJ[i][j]=1;
                lj=i;
                cj=j;
            }

        if(x[j]=='X')
        {
            mR[i][j]=-1;
            mJ[i][j]=-1;
        }
        }

    }
}

void solutie(int mR[][100],int mJ[][100],int n,int m)
{
    int mini=10000,i,j,s1,s2;

    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
            if(mR[i][j]==mJ[i][j] and mR[i][j] > 1)
                if(mini > mR[i][j])
    {
        mini=mR[i][j];
        s1=i;
        s2=j;
    }

    s1++;
    s2++;

    g<<mini<<" "<<s1<<" "<<s2;
}

int main()
{
    int a[100][100],mR[100][100],mJ[100][100],n,m;

    citire(n,m,a,mR,mJ);

    lee(n,m,mR,lr,cr);
    lee(n,m,mJ,lj,cj);

    solutie(mR,mJ,n,m);





    return 0;
}