Cod sursa(job #1452315)

Utilizator timofte.alexandru05Timofte Alexandru Nicusor timofte.alexandru05 Data 20 iunie 2015 15:56:44
Problema Rj Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.82 kb
#include <fstream>
#include <iostream>
using namespace std;
char a [101][101];
int n,m,x[10201],y[10201],ar[101][101],aj[101][101];
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
ofstream out("rj.out");

void citire()
{int i;
ifstream in("rj.in");
in>>n>>m;
in.get();
for(i=0;i<n;i++)
{
    in.getline(a[i],101,'\n');
    //cout<<a[i]<<endl;
}
in.close();
}
int bune(int i,int j)
{
    return (i>=0 and i<n and j>=0 and j<m);
}
void Lee(int arj[][101],int i,int j)
{int k,pi=0,ps=0,ii,jj;
x[0]=i;
y[0]=j;
arj[i][j]=1;
while(pi<=ps)
{   i=x[pi];
    j=y[pi];
    for(k=0;k<8;k++)
       {
        ii=i+dx[k];
        jj=j+dy[k];
        if(bune(ii,jj)==1)
            if(a[ii][jj]==' ')
                if(arj[ii][jj]==0 or arj[ii][jj]>arj[i][j]+1)
                {
                    arj[ii][jj]=arj[i][j]+1;
                    ps++;
                    x[ps]=ii;
                    y[ps]=jj;
                }
       }
    pi++;
}
}



int main()
{int i,j,xr,yr,xi,yi,xj,yj,min;
citire();
for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    {
        if(a[i][j]=='R')
        {xr=i;
         yr=j;}

        if(a[i][j]=='J')
        {xj=i;
         yj=j;}
    }
Lee(ar,xr,yr);
for(i=0;i<n;i++)
    {for(j=0;j<m;j++)
        cout<<ar[i][j]<<" ";
    cout<<endl;
    }
for(i=0;i<n;i++)
    {for(j=0;j<m;j++)
        cout<<aj[i][j]<<" ";
    cout<<endl;
    }
Lee(aj,xj,yj);
for(i=0;i<n;i++)
    {for(j=0;j<m;j++)
        cout<<aj[i][j]<<" ";
    cout<<endl;
    }
min=m*n+1;
for(i=0;i<n;i++)
    for(j=0;j<m;j++)
    if(ar[i][j]==aj[i][j] and ar[i][j]!=0)
        if(min>ar[i][j])
            {
                min=ar[i][j];
                xi=i;
                yi=j;
            }
            out<<min<<" "<<xi+1<<" "<<yi+1;
return 0;
}