Cod sursa(job #1645572)

Utilizator biancabuduranBianca Buduran biancabuduran Data 10 martie 2016 12:53:03
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.98 kb
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int n,m,i,j,lj,cj,lr,cr,dir,p,u,OK,xx,yy,a[101][101],b[101][101],c[3][10001],dx[9]={0, -1, -1, 0, 1, 1, 1, 0, -1}, dy[9]={0, 0, 1, 1, 1, 0, -1, -1, -1};
char s[101];
int main()
{
    f>>n>>m;
    f.get();
    for(i=1;i<=n;i++)
        {f.get(s,101);
         for(j=1;j<=m;j++)
           {if(s[j-1]=='X') {a[i][j]=1;b[i][j]=1;}
               else if(s[j-1]==' ') {a[i][j]=0;b[i][j]=0;}
                 else if(s[j-1]=='R') {a[i][j]=2;lr=i;cr=j;b[i][j]=2;}
                    else if(s[j-1]=='J') {a[i][j]=2;lj=i;cj=j;b[i][j]=2;}}
          f.get();}
   for(i=0;i<=n+1;i++)
    {a[i][0]=1;b[i][0]=1;a[i][m+1]=1;b[i][m+1]=1;}
    for(j=0;j<=m+1;j++)
    {a[0][j]=1;b[0][j]=1;a[n+1][j]=1;b[n+1][j]=1;}
    c[1][1]=lr;
    c[2][1]=cr;
    b[lr][cr]=2;
    p=u=1;
    while(p<=u)
    {
        xx=c[1][p];
        yy=c[2][p];
        for(dir=1;dir<=8;dir++)
        if(b[xx+dx[dir]][yy+dy[dir]]==0){u++;
                                         c[1][u]=xx+dx[dir];
                                         c[2][u]=yy+dy[dir];
                                         b[xx+dx[dir]][yy+dy[dir]]=b[xx][yy]+1;
                                         }
        ++p;
    }
    c[1][1]=lj;
    c[2][1]=cj;
    p=u=1;
    OK=1;
    a[lj][cj]=2;
 while(p<=u&&OK)
    {
        xx=c[1][p];
        yy=c[2][p];
        for(dir=1;dir<=8;dir++)
            if(a[xx+dx[dir]][yy+dy[dir]]==0){u++;
                                         c[1][u]=xx+dx[dir];
                                         c[2][u]=yy+dy[dir];
                                         a[xx+dx[dir]][yy+dy[dir]]=a[xx][yy]+1;
                if(a[xx+dx[dir]][yy+dy[dir]]==b[xx+dx[dir]][yy+dy[dir]]&&a[xx+dx[dir]][yy+dy[dir]]!=1) {OK=0;dir=9;}
                                         }
        ++p;
    }
    g<<xx+dx[dir]<<' '<<yy+dy[dir]<<' '<<a[xx+dx[dir]][yy+dy[dir]];
     return 0;
}