Cod sursa(job #1545820)

Utilizator ivddabDabelea Ioana-Viviana ivddab Data 7 decembrie 2015 10:07:03
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.74 kb
#include <fstream>

using namespace std;
struct liniecoloana
{
    int lin; int col;
};
liniecoloana ps,pc,poz,c[102],p,v,aux;
int dl[]={1,-1,0,1,1,1,0,-1},dc[]={0,1,1,1,0,-1,-1,-1},a[102][102],b[102][102],n,m,ok,i,j,prim,ultim,k,min1,c1[102][102];
char ch[102];
ifstream f("rj.in");
ofstream g("rj.out");
int main()
{
    f>>n>>m;
    f.get();
    for(i=1;i<=n;i++)
        {
            f.getline(ch,102);
            for(j=1;j<=m;j++)
                {
                if(ch[j-1]=='X')
                   { a[i][j]=-1; b[i][j]=-1; }
                  else
               if(ch[j-1]=='J')
                  { ps.lin=i; ps.col=j; a[i][j]=0; b[i][j]=0; }
                 else
               if(ch[j-1]==' ')
                  { a[i][j]=0; b[i][j]=0; }
                 else
               if(ch[j-1]=='R')
                  { pc.lin=i; pc.col=j; a[i][j]=0; b[i][j]=0;
                  }
                }
        }
    for(i=0;i<=m+1;i++)
       { a[0][i]=-1; a[n+1][i]=-1; b[0][i]=1; b[n+1][i]=-1; c1[0][i]=-1; c1[n+1][i]=-1; }
    for(i=0;i<=n+1;i++)
        { a[i][0]=b[i][0]=-1; a[i][m+1]=b[i][m+1]=-1; c1[i][0]=-1; c1[i][m+1]=-1; }
    //Julieta
    prim=ultim=0;
    c[0]=ps;
    a[ps.lin][ps.col]=1;
    ok=1;
    while(prim<=ultim)
          {
          p=c[prim];
          prim++;
          for(k=0;k<8;k++)
              {
              v.lin=p.lin+dl[k];
              v.col=p.col+dc[k];
              if(a[v.lin][v.col]==0)
                 {
                  a[v.lin][v.col]=a[p.lin][p.col]+1;
                  ultim++;
                  c[ultim]=v;
                 }
              }
          }
    //Romea
    aux=ps;
    ps=pc;
    pc=aux;
    prim=ultim=0;
    c[0]=ps;
    b[ps.lin][ps.col]=1;
    ok=1;
    while(prim<=ultim)
          {
          p=c[prim];
          prim++;
          for(k=0;k<8;k++)
              {
              v.lin=p.lin+dl[k];
              v.col=p.col+dc[k];
              if(b[v.lin][v.col]==0)
                 {
                  b[v.lin][v.col]=b[p.lin][p.col]+1;
                  ultim++;
                  c[ultim]=v;
                 }
              }
          }
    min1=102*102+5;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(a[i][j]==b[i][j]&&a[i][j]>0&&c1[i][j]!=-1)
               {
               if(min1>a[i][j])
                  { min1=a[i][j]; poz.lin=i; poz.col=j; }
               }
    /*for(i=1;i<=n;i++)
        {
        for(j=1;j<=m;j++)
             g<<a[i][j]<<' ';
        g<<'\n';
        }
    g<<'\n';
    for(i=1;i<=n;i++)
        {
        for(j=1;j<=m;j++)
             g<<b[i][j]<<' ';
        g<<'\n';
        }
    g<<'\n';*/
    g<<min1<<' '<<poz.lin<<' '<<poz.col<<'\n';
    return 0;
}