Pagini recente » Cod sursa (job #119422) | Cod sursa (job #944823) | Cod sursa (job #710889) | Cod sursa (job #1176682) | Cod sursa (job #887644)
Cod sursa(job #887644)
#include <fstream>
int ro[102][102],jul[102][102],n,m;
const int dx[]={0,1,1,1,0,-1,-1,-1};
const int dy[]={1,1,0,-1,-1,-1,0,1};
void bordare(int x[102][102])
{int i;
for(i=0;i<=n;i++)
x[0][i]=-1;
for(i=0;i<=n;i++)
x[i][0]=-1;
for(i=0;i<=m;i++)
x[m+1][i]=-1;
for(i=0;i<=m;i++)
x[i][m+1]=-1;
x[n+1][m+1]=-1;
}
struct coada{int x,y;}a[100000];
using namespace std;
void lee(int x[102][102],int pozi, int pozj)
{int ii,jj,i;
int inceput=0,sfarsit=0;
a[0].x=pozi;
a[0].y=pozj;
while(inceput<=sfarsit)
{
ii=a[inceput].x;
jj=a[inceput].y;
inceput++;
for(i=0;i<8;i++)
if(x[ii+dx[i]][jj+dy[i]]==0)
{
sfarsit++;
x[ii+dx[i]][jj+dy[i]]=x[ii][jj]+1;
a[sfarsit].x=ii+dx[i];
a[sfarsit].y=jj+dy[i];
}
}
}
int main()
{char x[1000];int i,pozir,pozjr,pozij,pozjj,j;
ifstream in("rj.in");
ofstream out("rj.out");
in>>n>>m;in.getline(x,100);
for(i=1;i<=n;i++)
{
in.getline(x,100);
for(j=0;j<m;j++)
{
if(x[j]==' ') {ro[i][j+1]=0;jul[i][j+1]=0;}
if(x[j]=='X') {ro[i][j+1]=-1;jul[i][j+1]=-1;}
if(x[j]=='R') pozir=i,pozjr=j+1;
if(x[j]=='J') pozij=i,pozjj=j+1;
}
}
ro[pozir][pozjr]=1;
jul[pozij][pozjj]=1;
bordare(ro);
bordare(jul);
lee(ro,pozir,pozjr);
lee(jul,pozij,pozjj);
int mini,minim,minj;
minim=1000;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(ro[i][j]==jul[i][j] && minim>ro[i][j]&&ro[i][j]>0)
{
minim=ro[i][j];
mini=i;
minj=j;
}
out<<minim<<" "<<mini<<" "<<minj;
in.close();
out.close();
return 0;
}