Cod sursa(job #2297280)

Utilizator robertadrian85@gmail.comRobert [email protected] Data 5 decembrie 2018 17:57:16
Problema Rj Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 5.84 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f ("rj.in");
ofstream g ("rj.out");
char a[101][101];
unsigned int n,m,r[101][101],j[101][101],v1[10001],v2[10001],v3[10001],v4[10001],l,c,st,dr,drj,tmin=10001,ll,cc;
bool ok;
char linie[101];
void citire (unsigned int & n ,unsigned int & m){
    f>>n>>m;
    f.get();
    char ch;
    for(l=1;l<=n;l++)
        {f.get(linie,102);
        for(c=1;c<=m;c++)
        {   ch=linie[c-1];
            a[l][c]=ch;
            if(ch=='R') {
                v1[1]=l;
                v2[1]=c;
                r[l][c]=1;
                        } else
            if(ch=='J') {
                v3[1]=l;
                v4[1]=c;
                j[l][c]=1;
                       }
            }
          f.get();
        }
    }
int main()
{
   citire(n,m);
   /*for(l=1;l<=n;l++)
    {
        for(c=1;c<=m;c++)cout<<a[l][c];
        cout<<endl;
    }*/
   st=1; dr=1; drj=1;
   while(st<=dr)
   {
                if(r[v1[st]-1][v2[st]]==0 && a[v1[st]-1][v2[st]]==' ')
                {
                    dr++;
                    v1[dr]=v1[st]-1;
                    v2[dr]=v2[st];
                    r[v1[dr]][v2[dr]]=r[v1[st]][v2[st]]+1;
                }

                if(r[v1[st]-1][v2[st]+1]==0 && a[v1[st]-1][v2[st]+1]==' ')
                {
                    dr++;
                    v1[dr]=v1[st]-1;
                    v2[dr]=v2[st]+1;
                    r[v1[dr]][v2[dr]]=r[v1[st]][v2[st]]+1;
                }
                if(r[v1[st]][v2[st]+1]==0 && a[v1[st]][v2[st]+1]==' ')
                {
                    dr++;
                    v1[dr]=v1[st];
                    v2[dr]=v2[st]+1;
                    r[v1[dr]][v2[dr]]=r[v1[st]][v2[st]]+1;
                }
                if(r[v1[st]+1][v2[st]+1]==0 && a[v1[st]+1][v2[st]+1]==' ')
                {
                    dr++;
                    v1[dr]=v1[st]+1;
                    v2[dr]=v2[st]+1;
                    r[v1[dr]][v2[dr]]=r[v1[st]][v2[st]]+1;
                }
                if(r[v1[st]+1][v2[st]]==0 && a[v1[st]+1][v2[st]]==' ')
                {
                    dr++;
                    v1[dr]=v1[st]+1;
                    v2[dr]=v2[st];
                    r[v1[dr]][v2[dr]]=r[v1[st]][v2[st]]+1;
                }
                if(r[v1[st]+1][v2[st]-1]==0 && a[v1[st]+1][v2[st]-1]==' ')
                {
                    dr++;
                    v1[dr]=v1[st]+1;
                    v2[dr]=v2[st]-1;
                    r[v1[dr]][v2[dr]]=r[v1[st]][v2[st]]+1;
                }
                if(r[v1[st]][v2[st]-1]==0 && a[v1[st]][v2[st]-1]==' ')
                {
                    dr++;
                    v1[dr]=v1[st];
                    v2[dr]=v2[st]-1;
                    r[v1[dr]][v2[dr]]=r[v1[st]][v2[st]]+1;
                }
                if(r[v1[st]-1][v2[st]-1]==0 && a[v1[st]-1][v2[st]-1]==' ')
                {
                    dr++;
                    v1[dr]=v1[st]-1;
                    v2[dr]=v2[st]-1;
                    r[v1[dr]][v2[dr]]=r[v1[st]][v2[st]]+1;
                }

       st++;
   }
st=1; dr=1;
  while(st<=dr)
   {

                 if(j[v3[st]-1][v4[st]]==0 && a[v3[st]-1][v4[st]]==' ')
                {
                    dr++;
                    v3[dr]=v3[st]-1;
                    v4[dr]=v4[st];
                    j[v3[dr]][v4[dr]]=j[v3[st]][v4[st]]+1;
                }

                if(j[v3[st]-1][v4[st]+1]==0 && a[v3[st]-1][v4[st]+1]==' ')
                {
                    dr++;
                    v3[dr]=v3[st]-1;
                    v4[dr]=v4[st]+1;
                    j[v3[dr]][v4[dr]]=j[v3[st]][v4[st]]+1;
                }
                if(j[v3[st]][v4[st]+1]==0 && a[v3[st]][v4[st]+1]==' ')
                {
                    dr++;
                    v3[dr]=v3[st];
                    v4[dr]=v4[st]+1;
                    j[v3[dr]][v4[dr]]=j[v3[st]][v4[st]]+1;
                }
                if(j[v3[st]+1][v4[st]+1]==0 && a[v3[st]+1][v4[st]+1]==' ')
                {
                    dr++;
                    v3[dr]=v3[st]+1;
                    v4[dr]=v4[st]+1;
                    j[v3[dr]][v4[dr]]=j[v3[st]][v4[st]]+1;
                }
                if(j[v3[st]+1][v4[st]]==0 && a[v3[st]+1][v4[st]]==' ')
                {
                    dr++;
                    v3[dr]=v3[st]+1;
                    v4[dr]=v4[st];
                    j[v3[dr]][v4[dr]]=j[v3[st]][v4[st]]+1;
                }
                if(j[v3[st]+1][v4[st]-1]==0 && a[v3[st]+1][v4[st]-1]==' ')
                {
                    dr++;
                    v3[dr]=v3[st]+1;
                    v4[dr]=v4[st]-1;
                    j[v3[dr]][v4[dr]]=j[v3[st]][v4[st]]+1;
                }
                if(j[v3[st]][v4[st]-1]==0 && a[v3[st]][v4[st]-1]==' ')
                {
                    dr++;
                    v3[dr]=v3[st];
                    v4[dr]=v4[st]-1;
                    j[v3[dr]][v4[dr]]=j[v3[st]][v4[st]]+1;
                }
                if(j[v3[st]-1][v4[st]-1]==0 && a[v3[st]-1][v4[st]-1]==' ')
                {
                    dr++;
                    v3[dr]=v3[st]-1;
                    v4[dr]=v4[st]-1;
                    j[v3[dr]][v4[dr]]=j[v3[st]][v4[st]]+1;
                }


       st++;
   }
   for(l=1;l<=n;l++)
    for(c=1;c<=m;c++)
       if(r[l][c]==j[l][c]&&tmin>r[l][c]&&r[l][c]&&j[l][c]){tmin=r[l][c];ll=l;cc=c;}
    //cout<<dr<<" "<<v3[dr]<<" "<<v4[dr];
    /*cout<<tmin<<endl;

     for(l=1;l<=n;l++)
    {
        for(c=1;c<=m;c++)cout<<r[l][c]<<" ";
        cout<<endl;
    }
    cout<<endl;
     for(l=1;l<=n;l++)
    {
        for(c=1;c<=m;c++)cout<<j[l][c]<<" ";
        cout<<endl;
    }
    cout<<r[15][46]<<" "<<j[15][46];*/
    g<<tmin<<" "<<ll<<" "<<cc;
    return 0;

}