Cod sursa(job #1378663)

Utilizator ioanaalina1Ioana Sandu ioanaalina1 Data 6 martie 2015 13:32:32
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.71 kb
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,a[101][101],b[101][101],xs,ys,xf,yf;
int dl[4]={-1,1,0,0};
int dc[4]={0,0,-1,1};
struct d
{
    int l,c;
} d[10001];
char c,s[100];
void cit(){
    f>>n>>m;
    int i,j;
    for(i=1;i<=n;i++)
    {
        f.ignore();
        f.get (s,256);int k=strlen(s);
        for (j=0;j<k;j++)
        {
            if (s[j]=='R')
                 {
                    xs=i;
                    ys=j+1;
                    a[i][j+1]=3;
                }
            if (s[j]=='J')
                 {
                    xf=i;
                    yf=j+1;
                    a[i][j+1]=3;
                }
            if(s[j]=='X')
                a[i][j+1]=-1;
        }
    }
}
void lee()
{
   int h,xc,yc,dc1,xn,yn;
     int p=1,u=1;
     d[p].l=xs;
     d[p].c=ys;
     dc1=1; b[xs][ys]=1;
     while(p<=u)
     {
         xc=d[p].l;
         yc=d[p].c;
         dc1=b[xc][yc];
         for(h=0;h<=3;h++)
           {
               xn=xc+dl[h];
               yn=yc+dc[h];
               if(((a[xn][yn]==0)||(a[xn][yn]==3))&&(b[xn][yn]==0)&&(xn>0)&&(xn<=n)&&(yn>0)&&(yn<=m))
               {
                   u++;
                   d[u].l=xn;
                   d[u].c=yn;
                   b[xn][yn]=dc1+1;
               }
           }
           p++;
     }
}
int main()
{
    cit(); int l,i,j;

      lee();
  if((b[xf][yf]-1)%2==0)
     l=b[xf][yf]/2;
     else
       l=b[xf][yf]/2+1;
       g<<l<<" ";
     for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
           if(b[i][j]==1+l){
             g<<i<<" "<<j;
                break;}
    return 0;
}