Pagini recente » Cod sursa (job #1557097) | Cod sursa (job #1294818) | Profil BirtasAndrei | Cod sursa (job #1858239) | Cod sursa (job #2148943)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int R[102][102],J[102][102];
char x[102];
bool a[102][102];
int ri,rj,ji,jj,i,j,n,m;
int diri[]={0,0,-1,-1,-1,1,1,1},dirj[]={-1,1,-1,0,1,-1,0,1};
void lee(int i,int j,int b[102][102])
{
struct{int i,j;}l[10002];
int M=1,m=0,ii,jj;
l[0].i=i;l[0].j=j;
while(m<M)
{
i=l[m].i;j=l[m].j;
for(int k=0;k<=7;++k)
{
ii=i+diri[k];jj=j+dirj[k];
if(b[ii][jj]==0)if(a[ii][jj]==0)
{
l[M].i=ii;l[M].j=jj;
b[ii][jj]=b[i][j]+1;++M;
}
}
++m;
}
}
int main()
{
f>>n>>m;
f.getline(x+1,102);
for(i=1;i<=n;++i)
{
f.getline(x+1,102);
for(j=1;j<=m;++j)
switch(x[j])
{
case 'X':a[i][j]=1;break;
case ' ':a[i][j]=0;break;
case 'R':ri=i;rj=j;a[i][j]=1;break;
case 'J':ji=i;jj=j;a[i][j]=1;break;
}
}
++n;++m;x[0]=max(m,n);
for(i=0;i<=x[0];++i){a[i][0]=a[0][i]=a[n][i]=a[i][m]=1;}
--n;--m;
//for(i=0;i<=n+1;++i){for(j=0;j<=m+1;++j)cout<<a[i][j]<<' ';cout<<'\n';}cout<<'\n';
lee(ri,rj,R);
//for(i=1;i<=n;++i){for(j=1;j<=m;++j)cout<<R[i][j]<<' ';cout<<'\n';}cout<<'\n';
lee(ji,jj,J);
//for(i=1;i<=n;++i){for(j=1;j<=m;++j)cout<<J[i][j]<<' ';cout<<'\n';}
ri=2000000;
for(i=1;i<=n;++i)for(j=1;j<=m;++j)if(R[i][j]>0)if(R[i][j]==J[i][j])if(R[i][j]<ri)
{
ri=R[i][j];
ji=i;jj=j;
}
cout<<ri+1<<' '<<ji<<' '<<jj;
g<<ri+1<<' '<<ji<<' '<<jj;
}