Cod sursa(job #984252)

Utilizator Darius15Darius Pop Darius15 Data 13 august 2013 21:35:16
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>

using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
struct poz{short int l;short int c;};
short int b[101][101],d[101][101],m,n,i,j,a[101][101];
char lin[201];
int dc[9]={0,0,0,-1,-1,-1,1,1,1};
int dl[9]={0,-1,1,1,0,-1,-1,0,1};
poz pr,pj,pc,pv;
void citire()
{
    f>>m>>n;
    for (i=1;i<=m;i++)
    {
        f.get();
        f.get(lin,200);
        for (j=0;j<=n-1;j++)
        {
            if (lin[j]==' ') a[i][j+1]=-1;
            if (lin[j]=='R') pr.l=i,pr.c=j+1;
            if (lin[j]=='J') pj.l=i,pj.c=j+1;
        }
    }
}
void lee(poz pr,short int b[101][101])
{
    poz c[20002];
    int incc=0,sfc=0;
    c[incc]=pr;
    while(incc<=sfc)
    {
      pc=c[incc++];
      for (i=1;i<=8;i++)
      {pv.l=pc.l+dl[i],pv.c=pc.c+dc[i];
      if (b[pv.l][pv.c]==0 && a[pv.l][pv.c]==-1)
      {
          b[pv.l][pv.c]=b[pc.l][pc.c]+1;
          c[++sfc]=pv;
      }
    }
}
}
int main()
{
    citire();
    int mini=10000,pozl,pozc;
    lee(pr,b);
    lee(pj,d);
    for (i=1;i<=m;i++)
        for (j=1;j<=n;j++)
        if (b[i][j]==d[i][j] && b[i][j]<mini && b[i][j]!=0  )
           mini=b[i][j],pozl=i,pozc=j;
   g<<mini+1<<' '<<pozl<<' '<<pozc;

    return 0;
}