Cod sursa(job #973282)

Utilizator robertstrecheStreche Robert robertstreche Data 13 iulie 2013 21:49:44
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <fstream>
#include <cstring>

using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int a[50000][101],b[50000][101],okk,lc,cc,l,c,p,x[10000],y[10000],u,lenc,i,j,n,m,l1,l2,c1,c2;
char ccc[1001];
short dx[9] = {0,-1,-1,-1,0,1,1,1,0};
short dy[9] = {0,-1,0,1,1,1,0,-1,-1};
int ok(int l,int c)
{
    if (l>=0 && c>=0 && l<n && c<m)return 1;
    return 0;
}
int main()
{
    f>>n>>m;
     f.get();
    for (i=0;i<n;i++)
     {
          f.getline(ccc,1000);
          lenc = strlen(ccc);
         for (j=0;j<lenc;j++)
      {

          if (ccc[j]=='R')
            l1=i,c1=j;
          if (ccc[j]=='J')
            l2=i,c2=j;
          if (ccc[j]=='X')
            a[i][j]=1;
      }

     }
       p=1;
       u=1;
       y[1]=l1;
       x[1]=c1;
       while (p<=u)
        { lc=y[p];
          cc=x[p];
          p++;

          for (i=1;i<=8;i++)
           {
               l=lc+dy[i];
               c=cc+dx[i];

               if (ok(l,c) && !a[l][c] && !b[l][c])
                {
                    b[l][c]=b[lc][cc]+1;
                    u++;
                    y[u]=l;
                    x[u]=c;

                }
           }

        }
        g<<b[l2][c2]/2+1<<" ";
        for (i=0;i<n;i++)
       {
           for (j=0;j<m;j++)
              if (b[i][j]==b[l2][c2]/2)
               {g<<i+1<<" "<<j+1;
               okk=1;
                break;
               }
               if (okk)break;
       }

    f.close();
    g.close();
}