Cod sursa(job #1605930)

Utilizator BieLoveChocolateBianca Teodora BieLoveChocolate Data 19 februarie 2016 16:53:53
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.42 kb
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,ir,jr,ij,jj;
int a[105][105],inainte[100005];
char s[105];
struct {int i,j;}c[100005];

void citire()
{ int i,j;
   f.getline(s,105);
   for(i=1;i<=m;i++)
   {
       f.getline(s,105);
       for(j=0;j<n;j++)
            if(s[j]=='X') a[i][j+1]=-1;
            else if(s[j]=='R') ir=i,jr=j+1;
            else if(s[j]=='J') ij=i,jj=j+1;
   }
   for(i=0;i<=m+1;i++) a[0][i]=a[i][m+1]=-1;
   for(i=0;i<=n+1;i++) a[i][0]=a[n+1][i]=-1;
}


void lee()
{
    int p,u,di[]={-1,-1,0,1,1,1,0,-1},dj[]={0,1,1,1,0,-1,-1,-1},k,inou,jnou,loc,i;
    a[ir][jr]=1;
    c[1].i=ir;c[1].j=jr;
    p=u=1;
    while(p<=u)
    { for(k=0;k<=7;k++)
        { inou=c[p].i+di[k];
          jnou=c[p].j+dj[k];
          if(inou==ij && jnou==jj && a[c[p].i][c[p].j]%2==0)
          {
             g<<a[c[p].i][c[p].j]/2+1<<' ';
             loc=p;
             for(i=1;i<a[c[p].i][c[p].j]/2;i++) loc=inainte[loc];
              g<<c[loc].i<<' '<<c[loc].j<<'\n';
              p=u+1;
              return;
          }
          if(a[inou][jnou]==0)
          {a[inou][jnou]=a[c[p].i][c[p].j]+1;
           u++;
           c[u].i=inou;c[u].j=jnou;
           inainte[u]=p;
          }
        }
        p++;

        }

}

void drum() {}

int main()
{ f>>m>>n;
    citire();
    lee();

  return 0;
}