Cod sursa(job #1452272)

Utilizator timofte.alexandru05Timofte Alexandru Nicusor timofte.alexandru05 Data 20 iunie 2015 14:37:51
Problema Rj Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.86 kb
#include <iostream>
#include<fstream>
#include<string.h>
using namespace std;
ifstream in ("rj.in");
ofstream out("rj.out");

char a[102][102];
int n,m,xr,yr,xj,yj;
int ar[102][102],aj[102][102];

const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
void citire()
{
    char sir[102];
    int i,j;
    in>>n>>m;
    in.get();
    for(i=1;i<=n;i++)
    {
        in.getline(sir,102,'\n');
            for(j=0;j<m;j++)
                {
                    a[i][j+1]=sir[j];
                    if(a[i][j+1]=='R'){xr=i;yr=j+1;}
                    if(a[i][j+1]=='J'){xj=i;yj=j+1;}
                }

    }
    in.close();
    /*
    for(i=1;i<=n;i++)
    {
            out<<a[i]+1;
        out<<endl;
    }
    out.close();
    */

}
int bune(int ii,int jj)
{
    return (ii=1 and ii<=n and jj>=1 and jj<=m);
}
void drum(int ar[][102], int i,int j,int pas)
{
    int ii,jj,k;
    for(k=0;k<8;k++)
    {
        ii=i+dx[k];
        jj=j+dy[k];
        if(bune(ii,jj))
            if((a[ii][jj]==' ')and (ar[ii][jj]>pas or ar[ii][jj]==0))
            {
                ar[ii][jj]=pas;
                drum(ar,ii,jj,pas+1);
            }
    }
}
int main()
{
    int i,j,min,xi,yi;

    citire();
    //cout<<xr<<" "<<yr<<endl<<xj<<" "<<yj<<endl;
    ar[xr][yr]=1;
    drum(ar,xr,yr,2);

    aj[xj][yj]=1;
    drum(aj,xj,yj,2);
    /*
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
            cout<<aj[i][j]<<" ";
        cout<<endl;
    }
    */
    min=n*m+1;

    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            if(ar[i][j]==aj[i][j])
                if(ar[i][j]<min and ar[i][j]>0)
                {
                    min=ar[i][j];
                    xi=i;
                    yi=j;
                }
    out<<min<<" "<<xi<<" "<<yi;
    out.close();

    return 0;
}