Cod sursa(job #2335248)

Utilizator Briana_NeaguNeagu Briana Briana_Neagu Data 3 februarie 2019 20:08:41
Problema Rj Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.44 kb
#include <iostream>
#include <fstream>
#include <queue>


using namespace std;

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

int di[8]= {0,0,-1,1,1,1,-1,-1};
int dj[8]= {1,-1,0,0,1,-1,-1,1};
int mapJ[100][100],startxJ,startyJ;
int mapR[100][100],startxR,startyR,n,m;
queue < pair <int,int> > coada;


void citire()
{
    f>>n>>m;
    f.get();
    char linie[100];
    for (int i=1; i<=n; i++)
    {
        int k=0;
        f.getline(linie,256);
        for (int j=0; j<=m-1; j++)
        {
            if(linie[j]=='R')
            {
                startxR=i;
                startyR=j+1;
            }
            else if (linie[j]=='J')
            {
                startxJ=i;
                startyJ=j+1;

            }
            else if (linie[j]=='X')
            {
                mapR[i][j+1]=-1;
                mapJ[i][j+1]=-1;
            }
        }

    }
}



bool ok(int i, int j)
{
    if (i<1|| j<1|| i>n || j>m)
        return false;
    if (mapJ[i][j]==-1)
        return false;
    return true;
}

void lee (int Map[100][100],int startx,int starty)
{
    int i,i1,j,j1,d;
    Map[startx][starty]=1;
    coada.push(make_pair(startx,starty));
    while (!coada.empty())
    {
        i=coada.front().first;
        j=coada.front().second;
        coada.pop();
        for (d=0; d<8; d++)
        {
            i1=i+di[d];
            j1=j+dj[d];
            if (ok(i1,j1)&& Map[i1][j1]<1)
            {
                Map[i1][j1]=Map[i][j]+1;
                coada.push(make_pair(i1,j1));
            }
        }
    }


}

void show (int mat[100][100])
{
    int i,j;
    for (i=1; i<=n; i++)
    {
        for (j=1; j<=m; j++)
            g<<mat[i][j]<<" ";
        g<<'\n';
    }
}

int main()
{
    int i,j;
    citire();
    lee(mapJ,startxJ,startyJ);
    lee(mapR,startxR,startyR);
    int k=10000000,ik,jk;
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++)

        {
            if (mapJ[i][j] == mapR[i][j]   &&  mapJ[i][j]<=k && mapJ[i][j]>0 )
            {

                if (k=mapJ[i][j] && j<jk)

                {
                    k=mapJ[i][j];
                    ik=i;
                    jk=j;
                }
                else
                {

                    k=mapJ[i][j];
                    ik=i;
                    jk=j;

                }

            }
        }

    g<<k<<" "<<ik<<" "<<jk;

}