Cod sursa(job #1999085)

Utilizator lupulescu2001Lupulescu Vlad lupulescu2001 Data 10 iulie 2017 10:42:41
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.41 kb
#include<fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int a[106][106],b[106][106];
pair <int,int> coada1[100000],coada2[100000];
int main()
{
    int i,j,n,m,lin[9]= {0,0,0,1,-1,1,-1,1,-1},col[9]= {0,1,-1,0,0,1,1,-1,-1},k=1,l=1,raspuns1,raspuns2,ok=0,raspuns3,min1=10000000,linia,coloana;
    char c;
    fin>>n>>m;
    fin.get(c);
    for(i=1; i<=n+2; i++)
    {
        for(j=1; j<=m+2; j++)
        {
            fin.get(c);
            if(c!='\n')
                if(c=='X')
                {
                    a[i][j]=-1;
                    b[i][j]=-1;
                }
                else if(c=='R')
                {
                    coada1[1].first=i;
                    coada1[1].second=j;
                    a[i][j]=1;
                }
                else if(c=='J')
                {
                    coada2[1].first=i;
                    coada2[1].second=j;
                    b[i][j]=1;

                }
            if(c=='\n')
                break;
        }
    }
    for(j=0; j<=m+1; j++)
    {
        a[0][j]=-1;
        a[n+1][j]=-1;
        b[0][j]=-1;
        b[n+1][j]=-1;
    }
    for(i=0; i<=n+1; i++)
    {
        a[i][0]=-1;
        a[i][m+1]=-1;
        b[i][0]=-1;
        b[i][m+1]=-1;
    }
    while(k<=l)
    {
        for(i=1; i<=8; i++)
            if(a[coada1[k].first+lin[i]][coada1[k].second+col[i]]==0)
            {
                l++;
                a[coada1[k].first+lin[i]][coada1[k].second+col[i]]=a[coada1[k].first][coada1[k].second]+1;
                coada1[l].first=coada1[k].first+lin[i];
                coada1[l].second=coada1[k].second+col[i];

            }
        k++;
    }
    k=1;
    l=1;
while(k<=l)
    {
        for(i=1; i<=8; i++)
            if(b[coada2[k].first+lin[i]][coada2[k].second+col[i]]==0)
            {
                l++;
                b[coada2[k].first+lin[i]][coada2[k].second+col[i]]=b[coada2[k].first][coada2[k].second]+1;
                coada2[l].first=coada2[k].first+lin[i];
                coada2[l].second=coada2[k].second+col[i];
            }
        k++;
    }


    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
            if(a[i][j]==b[i][j] && a[i][j]>0 && a[i][j]<min1)
            {
                min1=a[i][j];
                linia=i;
                coloana=j;
            }
    fout<<min1<<" "<<linia<<" "<<coloana;
}