Cod sursa(job #2244553)

Utilizator IoanStoicaStoica Ioan IoanStoica Data 23 septembrie 2018 00:40:44
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.85 kb
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
int main()
{
    ifstream f("rj.in");
    ofstream g("rj.out");
    int R[101][101]={0},J[101][101]={0};
    int m,n,i,j,l0r,c0r,l0j,c0j;
    int l0,c0;
    char c;
    f>>n>>m;
    for(i=1;i<=n;i++)
    {
               f>>noskipws>>c;
                for(j=1;j<=m;j++)
    {
        f>>noskipws>>c;
        if(c=='X')
            R[i][j]=J[i][j]=-1;
        else if(c=='R')
        {
            R[i][j]=1;
            l0r=i;
            c0r=j;
        }
        else if(c=='J')
        {
            J[i][j]=1;
            l0j=i;
            c0j=j;
        }
    }
    }
    c='R';
    l0=l0r;
    c0=c0r;
    if(c=='R')
    {
    R[l0][c0]=1;
    int lp,lu,cp,cu,CoadaL[10000]= {0},CoadaC[10000]= {0},lcrt,ccrt,lnext,cnext;
    lu=lp=cu=cp=0;
    lu++;
    CoadaL[lu]=l0;
    cu++;
    CoadaC[cu]=c0;
    while(lu!=lp)
    {
        lp++;
        lcrt=CoadaL[lp];
        cp++;
        ccrt=CoadaC[cp];
        for(i=1; i<=8; i++)
        {
            if(i==1)    {lnext=lcrt+1;
            cnext=ccrt;}
            if(i==2)    {lnext=lcrt-1;
            cnext=ccrt;}
            if(i==3)    {lnext=lcrt;
            cnext=ccrt+1;}
            if(i==4)    {lnext=lcrt;
            cnext=ccrt-1;}
            if(i==5)
            {
                lnext=lcrt+1;
                cnext=ccrt+1;
            }
            else if(i==6)
            {
                lnext=lcrt+1;
                cnext=ccrt-1;
            }
            else if(i==7)
            {
                lnext=lcrt-1;
                cnext=ccrt+1;
            }
            else if(i==8)
            {
                lnext=lcrt-1;
                cnext=ccrt-1;
            }
            if(lnext>=1 && cnext>=1 && lnext<=n && cnext<=m)
                if(R[lnext][cnext]==0)
                {
                    R[lnext][cnext]=R[lcrt][ccrt]+1;
                    lu++;
                    CoadaL[lu]=lnext;
                    cu++;
                    CoadaC[cu]=cnext;
                }
        }
    }
    }
    c='J';
    l0=l0j;
    c0=c0j;
    if(c=='J')
    {
    J[l0][c0]=1;
    int lp,lu,cp,cu,CoadaL[10000]= {0},CoadaC[10000]= {0},lcrt,ccrt,lnext,cnext;
    lu=lp=cu=cp=0;
    lu++;
    CoadaL[lu]=l0;
    cu++;
    CoadaC[cu]=c0;
    while(lu!=lp)
    {
        lp++;
        lcrt=CoadaL[lp];
        cp++;
        ccrt=CoadaC[cp];
        for(i=1; i<=8; i++)
        {
            if(i==1)    {lnext=lcrt+1;
            cnext=ccrt;}
            if(i==2)    {lnext=lcrt-1;
            cnext=ccrt;}
            if(i==3)    {lnext=lcrt;
            cnext=ccrt+1;}
            if(i==4)    {lnext=lcrt;
            cnext=ccrt-1;}
            if(i==5)
            {
                lnext=lcrt+1;
                cnext=ccrt+1;
            }
            else if(i==6)
            {
                lnext=lcrt+1;
                cnext=ccrt-1;
            }
            else if(i==7)
            {
                lnext=lcrt-1;
                cnext=ccrt+1;
            }
            else if(i==8)
            {
                lnext=lcrt-1;
                cnext=ccrt-1;
            }
            if(lnext>=1 && cnext>=1 && lnext<=n && cnext<=m)
                if(J[lnext][cnext]==0)
                {
                    J[lnext][cnext]=J[lcrt][ccrt]+1;
                    lu++;
                    CoadaL[lu]=lnext;
                    cu++;
                    CoadaC[cu]=cnext;
                }
        }
    }
    }
    int Dminim=100000,lfinis,cfinis;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        if(R[i][j]==J[i][j] && R[i][j]<Dminim && R[i][j]>=1)
    {
        Dminim=R[i][j];
        lfinis=i;
        cfinis=j;
    }
    g<<Dminim<<" "<<lfinis<<" "<<cfinis;
    f.close();g.close();
}